Javaの日時の差分を求めるサンプルです。
目次
サンプル | 月の差分を求める |
日の差分を求める | |
時間・分・秒の差分を求める |
月の差分を求める
public enum ChronoUnit MONTHS("Months", Duration.ofSeconds(31556952L / 12)) public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive) |
年月の差分を求めるサンプルです。
2019年10月から2020年1月の差分を求めます。
package test1;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日をセット
LocalDate date1 = LocalDate.of(2019,10,01);
// 2.年月日をセット
LocalDate date2 = LocalDate.of(2020,1,12);
System.out.println(
ChronoUnit.MONTHS.between(date1,date2)); //3
final String FORMAT = "yyyy-MM-dd";
// 3.年月日をセット
LocalDate date3 = LocalDate.parse
("2019-10-01", DateTimeFormatter.ofPattern(FORMAT));
// 4.年月日をセット
LocalDate date4 = LocalDate.parse
("2020-01-12", DateTimeFormatter.ofPattern(FORMAT));
System.out.println(
ChronoUnit.MONTHS.between(date3,date4)); //3
}
}
ChronoUnitのMONTHSとbetweenメソッドで年月の差分を求めています。
20,23行目は、年月日がyyyy-MM-ddのString型の場合です。
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-
日の差分を求める
public enum ChronoUnit DAYS("Days", Duration.ofSeconds(86400)) public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive) |
日数の差分を求めるサンプルです。
2019/12/31の0時から2020/1/2の0時の差分を求めます。
package test1;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日をセット
LocalDate date1 = LocalDate.of(2019,12,31);
// 2.年月日をセット
LocalDate date2 = LocalDate.of(2020,1,2);
System.out.println(ChronoUnit.DAYS.between(date1,date2)); //2
final String FORMAT = "yyyy-MM-dd";
// 3.年月日をセット
LocalDate date3 = LocalDate.parse
("2019-12-31", DateTimeFormatter.ofPattern(FORMAT));
// 4.年月日をセット
LocalDate date4 = LocalDate.parse
("2020-01-02", DateTimeFormatter.ofPattern(FORMAT));
System.out.println(ChronoUnit.DAYS.between(date3,date4)); //2
}
}
ChronoUnitのDAYSとbetweenメソッドで日の差分を求めています。
19,22行目は、年月日がyyyy-MM-ddのString型の場合です。
時間・分・秒の差分を求める
public enum ChronoUnit HOURS("Hours", Duration.ofSeconds(3600)) MINUTES("Minutes", Duration.ofSeconds(60)) SECONDS("Seconds", Duration.ofSeconds(1)) public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive) |
時・分・秒の差分を求めるサンプルです。
package test1;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test1 {
public static void main(String[] args) {
// 1.年月日時分秒をセット
LocalDateTime date1 = LocalDateTime.of(2019,12,31,0,0,0);
// 2.年月日時分秒をセット
LocalDateTime date2 = LocalDateTime.of(2020,1,2,0,0,0);
System.out.println(
ChronoUnit.HOURS.between(date1,date2)); //48 (時間)
System.out.println(
ChronoUnit.MINUTES.between(date1,date2)); //2880 (分)
System.out.println(
ChronoUnit.SECONDS.between(date1,date2)); //172800 (秒)
final String FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
// 3.年月日時分秒をセット
LocalDateTime date3 = LocalDateTime.parse
("2019-12-31 00:00:00.000", DateTimeFormatter.ofPattern(FORMAT));
// 4.年月日時分秒をセット
LocalDateTime date4 = LocalDateTime.parse
("2020-01-02 00:00:00.000", DateTimeFormatter.ofPattern(FORMAT));
System.out.println(
ChronoUnit.HOURS.between(date3,date4)); //48 (時間)
System.out.println(
ChronoUnit.MINUTES.between(date3,date4)); //2880 (分)
System.out.println(
ChronoUnit.SECONDS.between(date3,date4)); //172800 (秒)
}
}
ChronoUnitのHOURS,MINUTES,SECONDSとbetweenメソッドで時間・分・秒の差分を求めています。
24,27行目は、年月日がyyyy-MM-dd HH:mm:ss.SSSのString型の場合です。
関連の記事