日付/時刻値の差を求める – betweenメソッド
public static Period between(LocalDate start, LocalDate end) … Period
public static Duration between(Temporal start, Temporal end) … Duration(※)
start:開始日時
end:終了日時
Period/Duration#betweenメソッドを利用することで、日付時刻オブジェクト間の時間差を求めることができます。Periodは日付間隔を表す、Durationは時刻間隔を表すオブジェクトです。
※Temporalクラスは、Local/Offset/Zoned系クラスすべてのインターフェイスです。
以下は、あらかじめ用意した2個の日付/時刻の差を、Period/Duration#betweenメソッドで求める例です。
TimeBetween.java
- package com.example.mynavi.datetime;
- import java.time.Duration;
- import java.time.LocalDateTime;
- import java.time.Period;
- public class TimeBetween {
- public static void main(String[] args) {
- var local1 = LocalDateTime.of(
- 2025, 1, 1, 12, 30, 0, 0);
- var local2 = LocalDateTime.of(
- 2025, 9, 23, 6, 15, 30, 0);
- System.out.println(local1); // 結果:2025-01-01T12:30
- System.out.println(local2); // 結果:2026-09-23T06:15:30
- var period = Period.between(local1.toLocalDate(), local2.toLocalDate());
- System.out.println("日付の差:" + period); // 結果:日付の差:P1Y8M22D
- System.out.println( "日付の差:" +
- period.getYears() + "年" + period.getMonths() + "ヶ月" +
- period.getDays() + "日間"); // 結果:日付の差:1年8ヶ月22日間
- var duration = Duration.between(local1, local2);
- System.out.println( "時間の差:" + duration);
- // 結果:時間の差:PT15113H45M30S
- System.out.println( "時間の差:" + duration.toHours() + "時間");
- // 結果:時間の差:15113時間
- System.out.println( "時間の差:" + duration.toMinutes() + "分間");
- // 結果:時間の差:908265分間
- System.out.println( "時間の差:" + duration.getSeconds() + "秒間");
- // 結果:時間の差:54409530秒間
- }
- }
Period/Durationオブジェクトから日数や時間数を取得するには、以下のようなメソッドを利用します。
| Period/Durationクラスの主なメソッド | ||
|---|---|---|
| クラス | メソッド | 概要 |
| Period | getYears | 年数 |
| getMonths | 月数 | |
| getDays | 日数 | |
| Duration | toDays | 日数 |
| toHours | 時間数 | |
| toMinutes | 分数 | |
| toMillis | ミリ秒数 | |
| toNanos | ナノ秒数 | |
- 日付/時刻(Date-Time API)_目次
- 日付/時刻(Date-Time API)
- now/of/parseメソッド
- formatメソッド
- betweenメソッド
- 日時データを演算する
- Date/Calendarクラス⇔DateTime-APIのクラスを相互変換する
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。