m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

Javaで2つの期間より差を検出する。

2つの日時より日数を取得したい

ので簡単なやつを調査

年月日、時分秒の差を取得するサンプル

Sample02.java
package sample02;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Sample02 {
	
	static final String FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
	
	public static void main(String[] args) {
		// 2つのLocalDateTime
		LocalDateTime dt1;
		LocalDateTime dt2;
		
		dt1 = parse("2017-12-10 09:10:30.432");
		dt2 = parse("2022-03-16 12:45:12.102");
		
		System.out.println("期間:" + dt1 + "〜" + dt2);
		System.out.println();
		
		// 日数計算
		long localDiffDays1 = ChronoUnit.DAYS.between(dt1, dt2);
		System.out.println("日数:" + localDiffDays1);
		
		// 月数計算
		long localDiffDays2 = ChronoUnit.MONTHS.between(dt1, dt2);
		System.out.println("月数:" + localDiffDays2);
		
		// 年数計算
		long localDiffDays3 = ChronoUnit.YEARS.between(dt1, dt2);
		System.out.println("年数:" + localDiffDays3);
		
		// 秒計算
		long localDiffDays4 = ChronoUnit.SECONDS.between(dt1, dt2);
		System.out.println("秒 :" + localDiffDays4);
		
		// 分計算
		long localDiffDays5 = ChronoUnit.MINUTES.between(dt1, dt2);
		System.out.println("分 :" + localDiffDays5);
		
		// 時間計算
		long localDiffDays6 = ChronoUnit.HOURS.between(dt1, dt2);
		System.out.println("時 :" + localDiffDays6);
	}
	
	public static LocalDateTime parse(String date) {
		return LocalDateTime.parse(date, DateTimeFormatter.ofPattern(FORMAT));
	}
	
}

期間:2017-12-10T09:10:30.432〜2022-03-16T12:45:12.102

日数:1557
月数:51
年数:4
秒 :134537681
分 :2242294
時 :37371

ChronoUnit

こいつでそれぞれのデータ型に合わせてLocalDateTimeのデータを設定することで2つの日時の差を取得できるようです。
結構シンプル(^^)

参考

Javaで日時を扱う(Java8) - Qiita

今回はここまで