注目記事

【Javaコード入門】日付/時刻(Date-Time API)_④betweenメソッド

日付/時刻値の差を求める – 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

  1. package com.example.mynavi.datetime;
  2.  
  3. import java.time.Duration;
  4. import java.time.LocalDateTime;
  5. import java.time.Period;
  6.  
  7. public class TimeBetween {
  8.   public static void main(String[] args) {
  9.     var local1 = LocalDateTime.of(
  10.       2025, 1, 1, 12, 30, 0, 0);
  11.     var local2 = LocalDateTime.of(
  12.       2025, 9, 23, 6, 15, 30, 0);
  13.     System.out.println(local1); // 結果:2025-01-01T12:30
  14.     System.out.println(local2); // 結果:2026-09-23T06:15:30
  15.     var period = Period.between(local1.toLocalDate(), local2.toLocalDate());
  16.     System.out.println("日付の差:" + period);   // 結果:日付の差:P1Y8M22D
  17.     System.out.println( "日付の差:" +
  18.       period.getYears() + "年" + period.getMonths() + "ヶ月" +
  19.       period.getDays() + "日間"); // 結果:日付の差:1年8ヶ月22日間
  20.     var duration = Duration.between(local1, local2);
  21.     System.out.println( "時間の差:" + duration);
  22.     // 結果:時間の差:PT15113H45M30S
  23.     System.out.println( "時間の差:" + duration.toHours() + "時間");
  24.     // 結果:時間の差:15113時間
  25.     System.out.println( "時間の差:" + duration.toMinutes() + "分間");
  26.     // 結果:時間の差:908265分間
  27.     System.out.println( "時間の差:" + duration.getSeconds() + "秒間");
  28.     // 結果:時間の差:54409530秒間
  29.   }
  30. }

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万部を超える。