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);

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

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

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

4. 時刻の調整

例

LocalTime time = LocalTime.of(14, 30);

// 時を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"

2. 時刻文字列の解析

例

String timeString = "08:15:45 AM";
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 時間

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("店は閉まっています");
}

3. 時間範囲の作成

例

LocalTime start = LocalTime.of(8, 0);
LocalTime end = start.plusHours(8); // 16:00
System.out.println("勤務時間: " + start + " から " + end);

まとめ

LocalTimeLocalTime クラスは Java 8 日時 API でローカル時刻を処理する中核となるクラスであり、時刻を作成・操作・フォーマットするための豊富なメソッドを提供します。不変性とスレッドセーフティにより、LocalTimeマルチスレッド環境での使用に非常に適しています。LocalTimeクラスの使用を習得すれば、時間関連のプログラミングタスクを大幅に簡素化できます。

その他の拡張