Date/Time 初級

型安全なDurationとPeriodで時間差を計算する。

✕ Pre-Java 8
// How many days between two dates?
long diff = date2.getTime()
    - date1.getTime();
long days = diff
    / (1000 * 60 * 60 * 24);
// ignores DST, leap seconds
✓ Java 8+
long days = ChronoUnit.DAYS
    .between(date1, date2);
Period period = Period.between(
    date1, date2);
Duration elapsed = Duration.between(
    time1, time2);
このコードに問題がありますか? お知らせください。
🎯

型安全

時間にはDuration、日付にはPeriodと役割が明確で混乱しません。

🛡️

正確な計算

サマータイムの移行、うるう年、うるう秒を正しく処理します。

📖

読みやすさ

ChronoUnit.DAYS.between()は英語のように読めます。

旧来のアプローチ
ミリ秒演算
モダンなアプローチ
Duration / Period
JDKバージョン
8
難易度
初級
DurationとPeriod
利用可能

JDK 8(2014年3月)以降、広く利用可能

Durationは時間ベースの量(時・分・秒)、Periodは日付ベースの量(年・月・日)に使います。ChronoUnit.between()は単純な差の計算に便利です。いずれもエッジケースを正しく処理します。

共有 𝕏 🦋 in