Javaの日時の差分を求めるサンプルです。
目次
サンプル | 月の差分を求める |
日の差分を求める | |
時間の差分を求める |
月の差分を求める
年月の差分を求めるサンプルです。
2019年10月から2020年1月の差分を求めます。
package test1;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日をセット
// LocalDateTime ldate1 = LocalDateTime.of(2019,10,01,0,0,0);
LocalDate ldate1 = LocalDate.of(2019,10,01);
// 2.年月日をセット
// LocalDateTime ldate2 = LocalDateTime.of(2020,1,12,0,0,0);
LocalDate ldate2 = LocalDate.of(2020,1,12);
System.out.println(ChronoUnit.MONTHS.
between(YearMonth.from(ldate1),YearMonth.from(ldate2))); //3
}
}
12,15行目は、LocalDateクラスで年月日のインスタンスを生成しています。
11,14行目は、LocalDateTimeクラスで行う場合です。こちらでも可能です。
17,18行目は、ChronoUnitのMONTHSとbetweenメソッドで年月の差分を求めています。
対象の年月は、YearMonthクラスとfromメソッドで年月を取得しています。
Chronoは、時という意味です。
以下は、OracleのChronoUnit列挙型のリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/temporal/ChronoUnit.html#between-java.time.temporal.Temporal-java.time.temporal.Temporal-
以下は、OracleのYearMonthクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/YearMonth.html#from-java.time.temporal.TemporalAccessor-
日の差分を求める
日数の差分を求めるサンプルです。
2019/12/31の0時から2020/1/2の0時の差分を求めます。
package test1;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日をセット
LocalDate ldate1 = LocalDate.of(2019,12,31);
// 2.年月日をセット
LocalDate ldate2 = LocalDate.of(2020,1,2);
System.out.println(ChronoUnit.DAYS.between(ldate1,ldate2)); //2
}
}
9,11行目は、LocalDateクラスで年月日のインスタンスを生成しています。
13行目は、ChronoUnitのDAYSとbetweenメソッドで日の差分を求めています。
時間の差分を求める
時間の差分を求めるサンプルです。
2019/12/31から2020/1/2の差分を求めます。
package test1;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日時分秒をセット
LocalDateTime ldate1 = LocalDateTime.of(2019,12,31,0,0,0);
// 2.年月日時分秒をセット
LocalDateTime ldate2 = LocalDateTime.of(2020,1,2,0,0,0);
System.out.println(ChronoUnit.HOURS.between(ldate1,ldate2)); //48
}
}
9,11行目は、LocalDateTimeクラスで年月日時分秒のインスタンスを生成しています。
15行目は、ChronoUnitのHOURSとbetweenメソッドで時間の差分を求めています。
関連の記事