Java LocalTime クラス
LocalTimeは Java 8 で導入された日時 API (java.timeパッケージ) の重要なクラスの1つで、タイムゾーン情報を含まない時刻を表すために使用されます。1日の時刻をナノ秒精度で処理します。
LocalTime クラスの特徴
1. 不変性
LocalTime は不変クラスであり、すべての変更操作は新しいインスタンスを返し、元のオブジェクトは変更されません。
2. タイムゾーン情報なし
LocalTime はタイムゾーン情報を含まず、ローカル時刻のみを表します。
3. 時間精度
時からナノ秒までの時間精度(HH:mm:ss.nnnnnnnnn)をサポートします。
LocalTime オブジェクトの作成
1. 現在時刻の取得
LocalTime currentTime = LocalTime.now();
System.out.println("当前时间: " + currentTime);
2. of() メソッドでの作成
例
// 14:30:00 を作成
LocalTime time1 = LocalTime.of(14, 30);
// 09:15:30 を作成
LocalTime time2 = LocalTime.of(9, 15, 30);
// 10:20:30.500 (500ミリ秒) を作成
LocalTime time3 = LocalTime.of(10, 20, 30, 500000000);
LocalTime time1 = LocalTime.of(14, 30);
// 09:15:30 を作成
LocalTime time2 = LocalTime.of(9, 15, 30);
// 10:20:30.500 (500ミリ秒) を作成
LocalTime time3 = LocalTime.of(10, 20, 30, 500000000);
3. 文字列の解析
LocalTime parsedTime = LocalTime.parse("08:45");
System.out.println("解析的时间: " + parsedTime);
よく使うメソッド
1. 時間の構成要素の取得
例
LocalTime time = LocalTime.of(15, 45, 20, 123456789);
<p>int hour = time.getHour(); // 15
int minute = time.getMinute(); // 45
int second = time.getSecond(); // 20
int nano = time.getNano(); // 123456789
<p>int hour = time.getHour(); // 15
int minute = time.getMinute(); // 45
int second = time.getSecond(); // 20
int nano = time.getNano(); // 123456789
2. 時刻の比較
例
LocalTime time1 = LocalTime.of(10, 30);
LocalTime time2 = LocalTime.of(11, 15);
boolean isBefore = time1.isBefore(time2); // true
boolean isAfter = time1.isAfter(time2); // false
boolean isEqual = time1.equals(time2); // false
LocalTime time2 = LocalTime.of(11, 15);
boolean isBefore = time1.isBefore(time2); // true
boolean isAfter = time1.isAfter(time2); // false
boolean isEqual = time1.equals(time2); // false
3. 時刻の演算
例
LocalTime time = LocalTime.of(9, 0);
// 2時間加算
LocalTime plusHours = time.plusHours(2); // 11:00
// 30分減算
LocalTime minusMinutes = time.minusMinutes(30); // 08:30
// 1時間15分加算
LocalTime plusDuration = time.plus(Duration.ofMinutes(75)); // 10:15
// 2時間加算
LocalTime plusHours = time.plusHours(2); // 11:00
// 30分減算
LocalTime minusMinutes = time.minusMinutes(30); // 08:30
// 1時間15分加算
LocalTime plusDuration = time.plus(Duration.ofMinutes(75)); // 10:15
4. 時刻の調整
例
LocalTime time = LocalTime.of(14, 30);
// 時を10に設定
LocalTime withHour = time.withHour(10); // 10:30
// 分を45に設定
LocalTime withMinute = time.withMinute(45); // 14:45
// 時を10に設定
LocalTime withHour = time.withHour(10); // 10:30
// 分を45に設定
LocalTime withMinute = time.withMinute(45); // 14:45
フォーマットと解析
1. 時刻のフォーマット
例
java LocalTime time = LocalTime.of(16, 45, 30);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String formattedTime = time.format(formatter); // "16:45:30"
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String formattedTime = time.format(formatter); // "16:45:30"
2. 時刻文字列の解析
例
String timeString = "08:15:45 AM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
LocalTime parsedTime = LocalTime.parse(timeString, formatter);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
LocalTime parsedTime = LocalTime.parse(timeString, formatter);
実際の応用例
1. 2つの時刻間の間隔を計算する
例
LocalTime start = LocalTime.of(9, 0);
LocalTime end = LocalTime.of(17, 30);
Duration duration = Duration.between(start, end);
System.out.println("勤務時間: " + duration.toHours() + " 時間"); // 8 時間
LocalTime end = LocalTime.of(17, 30);
Duration duration = Duration.between(start, end);
System.out.println("勤務時間: " + duration.toHours() + " 時間"); // 8 時間
2. 営業時間内かどうかを確認する
例
LocalTime current = LocalTime.now();
LocalTime opening = LocalTime.of(8, 0);
LocalTime closing = LocalTime.of(22, 0);
if (current.isAfter(opening) && current.isBefore(closing)) {
System.out.println("店は営業中です");
} else {
System.out.println("店は閉まっています");
}
LocalTime opening = LocalTime.of(8, 0);
LocalTime closing = LocalTime.of(22, 0);
if (current.isAfter(opening) && current.isBefore(closing)) {
System.out.println("店は営業中です");
} else {
System.out.println("店は閉まっています");
}
3. 時間範囲の作成
例
LocalTime start = LocalTime.of(8, 0);
LocalTime end = start.plusHours(8); // 16:00
System.out.println("勤務時間: " + start + " から " + end);
LocalTime end = start.plusHours(8); // 16:00
System.out.println("勤務時間: " + start + " から " + end);
まとめ
LocalTimeLocalTime クラスは Java 8 日時 API でローカル時刻を処理する中核となるクラスであり、時刻を作成・操作・フォーマットするための豊富なメソッドを提供します。不変性とスレッドセーフティにより、LocalTimeマルチスレッド環境での使用に非常に適しています。LocalTimeクラスの使用を習得すれば、時間関連のプログラミングタスクを大幅に簡素化できます。