【Java】java.time.Durationクラスの例

2025/01/27に公開

時・分・秒などで収まるデータのときに使用

between

2つのInstantなどの間の時間差を表すDurationを取得

public class DurationTest {
 public static void main(String[] args) {
  Instant start = Instant.parse("2025-01-27T10:00:00Z");
  Instant end = Instant.parse("2025-01-27T12:30:00Z");

  // 開始と終了の間のDurationを計算
  Duration duration = Duration.between(start, end);
  System.out.println("時間差: " + duration.toHours() + "時間 " + duration.toMinutesPart() + "分");
 }
}

ofDays

日数単位で時間を扱いたい時などに使用

public class OfDaysTest {
	public static void main(String[] args) {
        Duration duration = Duration.ofDays(5);
        System.out.println("日数: " + duration.toDays() + "日");
    }
}

parse

ISO 8601形式の文字列を解析して Duration インスタンスを作成

public class ParseTest {
	public static void main(String[] args) {
		Duration duration = Duration.parse("PT2H30M");
		System.out.println("時間: " + duration.toHours() + "時間 " + duration.toMinutesPart() + "分");
	}
}

multipliedBy

Durationを指定した値で掛け算して、新しいDuration を生成

public class MltipliedByTest {
	public static void main(String[] args) {
		Duration duration = Duration.ofHours(2); // 2時間
		Duration result = duration.multipliedBy(3); // 3倍
		System.out.println("元の時間: " + duration.toHours() + "時間");
		System.out.println("3倍の時間: " + result.toHours() + "時間");
	}
}

dividedBy

Durationを指定した値で割り算して、新しいDuration を生成

	public static void main(String[] args) {
		Duration duration = Duration.ofHours(6); // 6時間
		Duration divided = duration.dividedBy(2); // 半分にする
		System.out.println("元の時間: " + duration.toHours() + "時間");
		System.out.println("割った時間: " + divided.toHours() + "時間");
	}
}

Udemyで講座を公開中!
https://zenn.dev/codek2/articles/e9e44f3e0023fb

X(旧Twitter)
https://twitter.com/kunchan2_

Zenn 本
https://zenn.dev/codek2?tab=books

Youtube
https://www.youtube.com/@codek2_studio

Discussion