Java : LocalDate (日付・タイムゾーンなし) - API使用例
LocalDate (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
LocalDate は日付 (年と月と日) を表すクラスです。
タイムゾーン情報は持ちません。
インスタンスの生成には of メソッドを使います。
final var date = LocalDate.of(2021, 12, 16);
System.out.println(date); // 2021-12-16
System.out.println(date.getYear()); // 2021
System.out.println(date.getMonth()); // DECEMBER
System.out.println(date.getDayOfMonth()); // 16
関連記事:日付・時刻の基本
フィールド
static final LocalDate EPOCH
System.out.println(LocalDate.EPOCH); // 1970-01-01
static final LocalDate MAX
System.out.println(LocalDate.MAX); // +999999999-12-31
System.out.println(LocalDate.MAX.getYear()); // 999999999
System.out.println(LocalDate.MAX.getMonthValue()); // 12
System.out.println(LocalDate.MAX.getDayOfMonth()); // 31
static final LocalDate MIN
System.out.println(LocalDate.MIN); // -999999999-01-01
System.out.println(LocalDate.MIN.getYear()); // -999999999
System.out.println(LocalDate.MIN.getMonthValue()); // 1
System.out.println(LocalDate.MIN.getDayOfMonth()); // 1
メソッド
Temporal adjustInto (Temporal temporal)
final var temporal = LocalDateTime.of(2021, 4, 7, 12, 30);
System.out.println(temporal); // 2021-04-07T12:30
final var date = LocalDate.of(1999, 1, 1);
System.out.println(date); // 1999-01-01
final var result = date.adjustInto(temporal);
System.out.println(result); // 1999-01-01T12:30
final var temporal = ZonedDateTime.of(2021, 4, 7, 12, 30, 0, 0, ZoneId.systemDefault());
System.out.println(temporal); // 2021-04-07T12:30+09:00[Asia/Tokyo]
final var date = LocalDate.of(3000, 1, 1);
System.out.println(date); // 3000-01-01
final var result = date.adjustInto(temporal);
System.out.println(result); // 3000-01-01T12:30+09:00[Asia/Tokyo]
LocalDateTime atStartOfDay ()
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
System.out.println(date.atStartOfDay()); // 2021-04-07T00:00
System.out.println(date.atStartOfDay(ZoneId.systemDefault())); // 2021-04-07T00:00+09:00[Asia/Tokyo]
final var date = LocalDate.of(1999, 1, 1);
System.out.println(date); // 1999-01-01
System.out.println(date.atStartOfDay()); // 1999-01-01T00:00
System.out.println(date.atStartOfDay(ZoneOffset.UTC)); // 1999-01-01T00:00Z
final var date = LocalDate.of(2000, 12, 10);
System.out.println(date); // 2000-12-10
System.out.println(date.atStartOfDay()); // 2000-12-10T00:00
System.out.println(date.atStartOfDay(ZoneOffset.ofHours(-9))); // 2000-12-10T00:00-09:00
ZonedDateTime atStartOfDay (ZoneId zone)
このメソッドの使用例は、atStartOfDay() にまとめて記載しました。
そちらのAPI使用例をご参照ください。
LocalDateTime atTime (int hour, int minute)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
System.out.println(date.atTime(12, 30)); // 2021-04-07T12:30
System.out.println(date.atTime(12, 30, 45)); // 2021-04-07T12:30:45
System.out.println(date.atTime(12, 30, 45, 123456789)); // 2021-04-07T12:30:45.123456789
LocalDateTime atTime (int hour, int minute, int second)
このメソッドの使用例は、atTime(int hour, int minute) にまとめて記載しました。
そちらのAPI使用例をご参照ください。
LocalDateTime atTime (int hour, int minute, int second, int nanoOfSecond)
このメソッドの使用例は、atTime(int hour, int minute) にまとめて記載しました。
そちらのAPI使用例をご参照ください。
LocalDateTime atTime (LocalTime time)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
{
final var time = LocalTime.of(12, 30);
System.out.println(time); // 12:30
System.out.println(date.atTime(time)); // 2021-04-07T12:30
}
{
final var time = LocalTime.of(12, 30, 45);
System.out.println(time); // 12:30:45
System.out.println(date.atTime(time)); // 2021-04-07T12:30:45
}
{
final var time = LocalTime.of(12, 30, 45, 123456789);
System.out.println(time); // 12:30:45.123456789
System.out.println(date.atTime(time)); // 2021-04-07T12:30:45.123456789
}
OffsetDateTime atTime (OffsetTime time)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
{
final var offset = OffsetTime.of(LocalTime.of(0, 0), ZoneOffset.UTC);
System.out.println(offset); // 00:00Z
System.out.println(date.atTime(offset)); // 2021-04-07T00:00Z
}
{
final var offset = OffsetTime.of(LocalTime.of(0, 0), ZoneOffset.ofHours(9));
System.out.println(offset); // 00:00+09:00
System.out.println(date.atTime(offset)); // 2021-04-07T00:00+09:00
}
{
final var offset = OffsetTime.of(LocalTime.of(12, 55), ZoneOffset.ofHoursMinutes(-2, -30));
System.out.println(offset); // 12:55-02:30
System.out.println(date.atTime(offset)); // 2021-04-07T12:55-02:30
}
int compareTo (ChronoLocalDate other)
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 2);
System.out.println(date2); // 2021-01-02
System.out.println(date1.compareTo(date2)); // -1
final var date1 = LocalDate.of(2021, 2, 1);
System.out.println(date1); // 2021-02-01
final var date2 = LocalDate.of(2021, 1, 31);
System.out.println(date2); // 2021-01-31
System.out.println(date1.compareTo(date2)); // 1
final var date1 = LocalDate.of(1999, 12, 31);
System.out.println(date1); // 1999-12-31
final var date2 = LocalDate.of(2000, 1, 1);
System.out.println(date2); // 2000-01-01
System.out.println(date1.compareTo(date2)); // -1
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 1);
System.out.println(date2); // 2021-01-01
System.out.println(date1.compareTo(date2)); // 0
Stream<LocalDate> datesUntil (LocalDate endExclusive)
final var date = LocalDate.of(2021, 1, 25);
System.out.println(date); // 2021-01-25
final var endDate = LocalDate.of(2021, 2, 5);
System.out.println(endDate); // 2021-02-05
//2021-01-25
//2021-01-26
//2021-01-27
//2021-01-28
//2021-01-29
//2021-01-30
//2021-01-31
//2021-02-01
//2021-02-02
//2021-02-03
//2021-02-04
date.datesUntil(endDate).forEach(System.out::println);
Stream<LocalDate> datesUntil (LocalDate endExclusive, Period step)
// 2日毎
final var date = LocalDate.of(2021, 1, 20);
System.out.println(date); // 2021-01-20
final var endDate = LocalDate.of(2021, 2, 5);
System.out.println(endDate); // 2021-02-05
//2021-01-20
//2021-01-22
//2021-01-24
//2021-01-26
//2021-01-28
//2021-01-30
//2021-02-01
//2021-02-03
date.datesUntil(endDate, Period.ofDays(2)).forEach(System.out::println);
// 1月毎
final var date = LocalDate.of(2021, 9, 20);
System.out.println(date); // 2021-09-20
final var endDate = LocalDate.of(2022, 2, 20);
System.out.println(endDate); // 2022-02-20
//2021-09-20
//2021-10-20
//2021-11-20
//2021-12-20
//2022-01-20
date.datesUntil(endDate, Period.ofMonths(1)).forEach(System.out::println);
// 4年毎
final var date = LocalDate.of(1999, 9, 20);
System.out.println(date); // 1999-09-20
final var endDate = LocalDate.of(2030, 9, 20);
System.out.println(endDate); // 2030-09-20
//1999-09-20
//2003-09-20
//2007-09-20
//2011-09-20
//2015-09-20
//2019-09-20
//2023-09-20
//2027-09-20
date.datesUntil(endDate, Period.ofYears(4)).forEach(System.out::println);
boolean equals (Object obj)
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 1);
System.out.println(date2); // 2021-01-01
System.out.println(date1.equals(date2)); // true
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 2);
System.out.println(date2); // 2021-01-02
System.out.println(date1.equals(date2)); // false
final var date1 = LocalDate.of(-2000, 1, 1);
System.out.println(date1); // -2000-01-01
final var date2 = LocalDate.of(2000, 1, 1);
System.out.println(date2); // 2000-01-01
System.out.println(date1.equals(date2)); // false
String format (DateTimeFormatter formatter)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
{
final var ret1 = date.format(DateTimeFormatter.ISO_DATE);
System.out.println(ret1); // 2021-04-07
final var ret2 = date.format(DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(ret2); // 20210407
final var ret3 = date.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日(E)"));
System.out.println(ret3); // 2021年04月07日(水)
}
{
System.out.println(Locale.getDefault()); // ja_JP
final var ret1 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
System.out.println(ret1); // 2021年4月7日水曜日
final var ret2 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
System.out.println(ret2); // 2021年4月7日
final var ret3 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM));
System.out.println(ret3); // 2021/04/07
final var ret4 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));
System.out.println(ret4); // 2021/04/07
}
static LocalDate from (TemporalAccessor temporal)
final var temporal = LocalDateTime.of(2021, 1, 3, 12, 30, 55);
System.out.println(temporal); // 2021-01-03T12:30:55
System.out.println(LocalDate.from(temporal)); // 2021-01-03
final var temporal = ZonedDateTime.of(2021, 2, 4, 0, 0, 0, 0, ZoneId.systemDefault());
System.out.println(temporal); // 2021-02-04T00:00+09:00[Asia/Tokyo]
System.out.println(LocalDate.from(temporal)); // 2021-02-04
final var temporal = OffsetDateTime.of(1999, 12, 1, 22, 30, 55, 1234, ZoneOffset.ofHours(12));
System.out.println(temporal); // 1999-12-01T22:30:55.000001234+12:00
System.out.println(LocalDate.from(temporal)); // 1999-12-01
int get (TemporalField field)
このAPIを使うより、getYear や getMonth、getDayOfMonth といったAPIを使うのをおすすめします。
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date.get(ChronoField.YEAR)); // 2021
System.out.println(date.get(ChronoField.MONTH_OF_YEAR)); // 4
System.out.println(date.get(ChronoField.DAY_OF_MONTH)); // 7
//date.get(ChronoField.HOUR_OF_DAY); // UnsupportedTemporalTypeException
IsoChronology getChronology ()
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
final var chronology = date.getChronology();
System.out.println(chronology); // ISO
int getDayOfMonth ()
final var date = LocalDate.of(2021, 1, 1);
System.out.println(date); // 2021-01-01
System.out.println(date.getDayOfMonth()); // 1
final var date = LocalDate.of(2021, 1, 2);
System.out.println(date); // 2021-01-02
System.out.println(date.getDayOfMonth()); // 2
final var date = LocalDate.of(2021, 1, 15);
System.out.println(date); // 2021-01-15
System.out.println(date.getDayOfMonth()); // 15
final var date = LocalDate.of(2021, 1, 30);
System.out.println(date); // 2021-01-30
System.out.println(date.getDayOfMonth()); // 30
final var date = LocalDate.of(2021, 1, 31);
System.out.println(date); // 2021-01-31
System.out.println(date.getDayOfMonth()); // 31
final var date = LocalDate.of(2021, 2, 1);
System.out.println(date); // 2021-02-01
System.out.println(date.getDayOfMonth()); // 1
DayOfWeek getDayOfWeek ()
final var date = LocalDate.of(2021, 1, 3);
System.out.println(date); // 2021-01-03
System.out.println(date.getDayOfWeek()); // SUNDAY
final var date = LocalDate.of(2021, 1, 4);
System.out.println(date); // 2021-01-04
System.out.println(date.getDayOfWeek()); // MONDAY
final var date = LocalDate.of(2021, 1, 5);
System.out.println(date); // 2021-01-05
System.out.println(date.getDayOfWeek()); // TUESDAY
final var date = LocalDate.of(2021, 1, 6);
System.out.println(date); // 2021-01-06
System.out.println(date.getDayOfWeek()); // WEDNESDAY
final var date = LocalDate.of(2021, 1, 7);
System.out.println(date); // 2021-01-07
System.out.println(date.getDayOfWeek()); // THURSDAY
final var date = LocalDate.of(2021, 1, 8);
System.out.println(date); // 2021-01-08
System.out.println(date.getDayOfWeek()); // FRIDAY
final var date = LocalDate.of(2021, 1, 9);
System.out.println(date); // 2021-01-09
System.out.println(date.getDayOfWeek()); // SATURDAY
final var date = LocalDate.of(2021, 1, 10);
System.out.println(date); // 2021-01-10
System.out.println(date.getDayOfWeek()); // SUNDAY
int getDayOfYear ()
final var date = LocalDate.of(2021, 1, 1);
System.out.println(date); // 2021-01-01
System.out.println(date.getDayOfYear()); // 1
final var date = LocalDate.of(2021, 1, 2);
System.out.println(date); // 2021-01-02
System.out.println(date.getDayOfYear()); // 2
final var date = LocalDate.of(2021, 1, 30);
System.out.println(date); // 2021-01-30
System.out.println(date.getDayOfYear()); // 30
final var date = LocalDate.of(2021, 1, 31);
System.out.println(date); // 2021-01-31
System.out.println(date.getDayOfYear()); // 31
final var date = LocalDate.of(2021, 2, 1);
System.out.println(date); // 2021-02-01
System.out.println(date.getDayOfYear()); // 32
final var date = LocalDate.of(2021, 2, 2);
System.out.println(date); // 2021-02-02
System.out.println(date.getDayOfYear()); // 33
final var date = LocalDate.of(2021, 12, 31);
System.out.println(date); // 2021-12-31
System.out.println(date.getDayOfYear()); // 365
final var date = LocalDate.of(2022, 1, 1);
System.out.println(date); // 2022-01-01
System.out.println(date.getDayOfYear()); // 1
IsoEra getEra ()
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
System.out.println(date.getEra()); // CE
long getLong (TemporalField field)
このAPIを使うより、getYear や getMonth、getDayOfMonth といったAPIを使うのをおすすめします。
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date.getLong(ChronoField.YEAR)); // 2021
System.out.println(date.getLong(ChronoField.MONTH_OF_YEAR)); // 4
System.out.println(date.getLong(ChronoField.DAY_OF_MONTH)); // 7
//date.getLong(ChronoField.HOUR_OF_DAY); // UnsupportedTemporalTypeException
Month getMonth ()
final var date = LocalDate.of(2021, 1, 15);
System.out.println(date); // 2021-01-15
System.out.println(date.getMonth()); // JANUARY
final var date = LocalDate.of(2021, 2, 15);
System.out.println(date); // 2021-02-15
System.out.println(date.getMonth()); // FEBRUARY
final var date = LocalDate.of(2021, 3, 15);
System.out.println(date); // 2021-03-15
System.out.println(date.getMonth()); // MARCH
final var date = LocalDate.of(2021, 12, 15);
System.out.println(date); // 2021-12-15
System.out.println(date.getMonth()); // DECEMBER
final var date = LocalDate.of(2022, 1, 1);
System.out.println(date); // 2022-01-01
System.out.println(date.getMonth()); // JANUARY
int getMonthValue ()
final var date = LocalDate.of(2021, 1, 15);
System.out.println(date); // 2021-01-15
System.out.println(date.getMonthValue()); // 1
final var date = LocalDate.of(2021, 2, 15);
System.out.println(date); // 2021-02-15
System.out.println(date.getMonthValue()); // 2
final var date = LocalDate.of(2021, 3, 15);
System.out.println(date); // 2021-03-15
System.out.println(date.getMonthValue()); // 3
final var date = LocalDate.of(2021, 12, 15);
System.out.println(date); // 2021-12-15
System.out.println(date.getMonthValue()); // 12
final var date = LocalDate.of(2022, 1, 1);
System.out.println(date); // 2022-01-01
System.out.println(date.getMonthValue()); // 1
int getYear ()
final var date = LocalDate.of(1999, 1, 1);
System.out.println(date); // 1999-01-01
System.out.println(date.getYear()); // 1999
final var date = LocalDate.of(2000, 1, 1);
System.out.println(date); // 2000-01-01
System.out.println(date.getYear()); // 2000
final var date = LocalDate.of(2021, 1, 1);
System.out.println(date); // 2021-01-01
System.out.println(date.getYear()); // 2021
final var date = LocalDate.of(9999, 1, 1);
System.out.println(date); // 9999-01-01
System.out.println(date.getYear()); // 9999
int hashCode ()
System.out.println(LocalDate.of(1970, 1, 1).hashCode()); // 4034625
System.out.println(LocalDate.of(1970, 1, 2).hashCode()); // 4034626
System.out.println(LocalDate.of(2021, 4, 8).hashCode()); // 4139272
System.out.println(LocalDate.of(9999, 1, 1).hashCode()); // 20469825
boolean isAfter (ChronoLocalDate other)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
final var date2 = LocalDate.of(2021, 4, 7);
final var date3 = LocalDate.of(2021, 4, 8);
final var date4 = LocalDate.of(2021, 4, 9);
System.out.println(date2); // 2021-04-07
System.out.println(date3); // 2021-04-08
System.out.println(date4); // 2021-04-09
System.out.println(date.isAfter(date2)); // true
System.out.println(date.isAfter(date3)); // false
System.out.println(date.isAfter(date4)); // false
final var date = LocalDate.of(2000, 1, 1);
System.out.println(date); // 2000-01-01
final var date2 = LocalDate.of(1999, 12, 31);
final var date3 = LocalDate.of(3000, 1, 1);
final var date4 = LocalDate.of(-200, 1, 1);
System.out.println(date2); // 1999-12-31
System.out.println(date3); // 3000-01-01
System.out.println(date4); // -0200-01-01
System.out.println(date.isAfter(date2)); // true
System.out.println(date.isAfter(date3)); // false
System.out.println(date.isAfter(date4)); // true
boolean isBefore (ChronoLocalDate other)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
final var date2 = LocalDate.of(2021, 4, 7);
final var date3 = LocalDate.of(2021, 4, 8);
final var date4 = LocalDate.of(2021, 4, 9);
System.out.println(date2); // 2021-04-07
System.out.println(date3); // 2021-04-08
System.out.println(date4); // 2021-04-09
System.out.println(date.isBefore(date2)); // false
System.out.println(date.isBefore(date3)); // false
System.out.println(date.isBefore(date4)); // true
final var date = LocalDate.of(2000, 1, 1);
System.out.println(date); // 2000-01-01
final var date2 = LocalDate.of(1999, 12, 31);
final var date3 = LocalDate.of(3000, 1, 1);
final var date4 = LocalDate.of(-200, 1, 1);
System.out.println(date2); // 1999-12-31
System.out.println(date3); // 3000-01-01
System.out.println(date4); // -0200-01-01
System.out.println(date.isBefore(date2)); // false
System.out.println(date.isBefore(date3)); // true
System.out.println(date.isBefore(date4)); // false
boolean isEqual (ChronoLocalDate other)
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 1);
System.out.println(date2); // 2021-01-01
System.out.println(date1.isEqual(date2)); // true
final var date1 = LocalDate.of(2021, 1, 1);
System.out.println(date1); // 2021-01-01
final var date2 = LocalDate.of(2021, 1, 2);
System.out.println(date2); // 2021-01-02
System.out.println(date1.isEqual(date2)); // false
final var date1 = LocalDate.of(2021, 2, 1);
System.out.println(date1); // 2021-02-01
final var date2 = LocalDate.of(2021, 1, 2);
System.out.println(date2); // 2021-01-02
System.out.println(date1.isEqual(date2)); // false
boolean isLeapYear ()
final var date1 = LocalDate.of(2020, 2, 29);
System.out.println(date1); // 2020-02-29
System.out.println(date1.isLeapYear()); // ture
final var date2 = LocalDate.of(2020, 12, 31);
System.out.println(date2); // 2020-12-31
System.out.println(date2.isLeapYear()); // true
final var date3 = LocalDate.of(2021, 1, 1);
System.out.println(date3); // 2021-01-01
System.out.println(date3.isLeapYear()); // false
boolean isSupported (TemporalField field)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
System.out.println(date.isSupported(ChronoField.YEAR)); // true
System.out.println(date.get(ChronoField.YEAR)); // 2021
System.out.println(date.isSupported(ChronoField.MONTH_OF_YEAR)); // true
System.out.println(date.get(ChronoField.MONTH_OF_YEAR)); // 4
System.out.println(date.isSupported(ChronoField.DAY_OF_MONTH)); // true
System.out.println(date.get(ChronoField.DAY_OF_MONTH)); // 7
System.out.println(date.isSupported(ChronoField.HOUR_OF_DAY)); // false
//date.get(ChronoField.HOUR_OF_DAY); // UnsupportedTemporalTypeException
boolean isSupported (TemporalUnit unit)
final var date = LocalDate.of(2021, 4, 7);
System.out.println(date); // 2021-04-07
System.out.println(date.isSupported(ChronoUnit.DAYS)); // true
System.out.println(date.isSupported(ChronoUnit.WEEKS)); // true
System.out.println(date.isSupported(ChronoUnit.MONTHS)); // true
System.out.println(date.isSupported(ChronoUnit.YEARS)); // true
System.out.println(date.isSupported(ChronoUnit.HOURS)); // false
int lengthOfMonth ()
final var date = LocalDate.of(2021, 1, 1);
System.out.println(date.lengthOfMonth()); // 31
final var date1 = LocalDate.of(2021, 2, 1);
System.out.println(date1.lengthOfMonth()); // 28
final var date2 = LocalDate.of(2020, 2, 1);
System.out.println(date2.lengthOfMonth()); // 29
final var date = LocalDate.of(2021, 4, 1);
System.out.println(date.lengthOfMonth()); // 30
final var date = LocalDate.of(2021, 12, 1);
System.out.println(date.lengthOfMonth()); // 31
int lengthOfYear ()
final var date = LocalDate.of(2019, 1, 1);
System.out.println(date.lengthOfYear()); // 365
System.out.println(date.isLeapYear()); // false
final var date = LocalDate.of(2020, 1, 1);
System.out.println(date.lengthOfYear()); // 366
System.out.println(date.isLeapYear()); // true
final var date = LocalDate.of(2021, 1, 1);
System.out.println(date.lengthOfYear()); // 365
System.out.println(date.isLeapYear()); // false
LocalDate minus (long amountToSubtract, TemporalUnit unit)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minus(1, ChronoUnit.DAYS)); // 2021-05-19
System.out.println(date.minus(2, ChronoUnit.MONTHS)); // 2021-03-20
System.out.println(date.minus(3, ChronoUnit.YEARS)); // 2018-05-20
LocalDate minus (TemporalAmount amountToSubtract)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minus(Period.ofDays(1))); // 2021-05-19
System.out.println(date.minus(Period.ofMonths(2))); // 2021-03-20
System.out.println(date.minus(Period.ofYears(3))); // 2018-05-20
System.out.println(date.minus(Period.of(1, 2, 3))); // 2020-03-17
LocalDate minusDays (long daysToSubtract)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minusDays(1)); // 2021-05-19
System.out.println(date.minusDays(2)); // 2021-05-18
System.out.println(date.minusDays(20)); // 2021-04-30
System.out.println(date.minusDays(365)); // 2020-05-20
LocalDate minusMonths (long monthsToSubtract)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minusMonths(1)); // 2021-04-20
System.out.println(date.minusMonths(2)); // 2021-03-20
System.out.println(date.minusMonths(12)); // 2020-05-20
final var date = LocalDate.of(2021, 3, 31);
System.out.println(date); // 2021-03-31
System.out.println(date.minusMonths(1)); // 2021-02-28
LocalDate minusWeeks (long weeksToSubtract)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minusWeeks(1)); // 2021-05-13
System.out.println(date.minusWeeks(2)); // 2021-05-06
System.out.println(date.minusWeeks(20)); // 2020-12-31
System.out.println(date.minusWeeks(100)); // 2019-06-20
LocalDate minusYears (long yearsToSubtract)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.minusYears(1)); // 2020-05-20
System.out.println(date.minusYears(2)); // 2019-05-20
System.out.println(date.minusYears(10)); // 2011-05-20
// うるう年
final var date = LocalDate.of(2020, 2, 29);
System.out.println(date); // 2020-02-29
System.out.println(date.minusYears(1)); // 2019-02-28
static LocalDate now ()
System.out.println(LocalDate.now()); // 2021-04-08
static LocalDate now (Clock clock)
// 意図的に5日進めたClock
final var clock = Clock.offset(Clock.systemDefaultZone(), Duration.ofDays(5));
System.out.println(LocalDate.now()); // 2021-04-08
System.out.println(LocalDate.now(clock)); // 2021-04-13
static LocalDate now (ZoneId zone)
System.out.println(ZonedDateTime.now()); // 2021-12-16T15:40:05.547042400+09:00[Asia/Tokyo]
System.out.println(LocalDate.now()); // 2021-12-16
System.out.println(LocalDate.now(ZoneOffset.ofHours(-18))); // 2021-12-15
static LocalDate of (int year, int month, int dayOfMonth)
System.out.println(LocalDate.of(2000, 2, 29)); // 2000-02-29
System.out.println(LocalDate.of(2021, 4, 8)); // 2021-04-08
System.out.println(LocalDate.of(LocalDate.MIN.getYear(), 1, 1)); // -999999999-01-01
System.out.println(LocalDate.of(LocalDate.MAX.getYear(), 12, 31)); // +999999999-12-31
static LocalDate of (int year, Month month, int dayOfMonth)
System.out.println(LocalDate.of(2000, Month.FEBRUARY, 29)); // 2000-02-29
System.out.println(LocalDate.of(2021, Month.APRIL, 8)); // 2021-04-08
System.out.println(LocalDate.of(LocalDate.MIN.getYear(), Month.JANUARY, 1)); // -999999999-01-01
System.out.println(LocalDate.of(LocalDate.MAX.getYear(), Month.DECEMBER, 31)); // +999999999-12-31
static LocalDate ofEpochDay (long epochDay)
System.out.println(LocalDate.ofEpochDay(0)); // 1970-01-01
System.out.println(LocalDate.ofEpochDay(1)); // 1970-01-02
System.out.println(LocalDate.ofEpochDay(2)); // 1970-01-03
System.out.println(LocalDate.ofEpochDay(15000)); // 2011-01-26
static LocalDate ofInstant (Instant instant, ZoneId zone)
final var instant = Instant.ofEpochSecond(1617883200);
System.out.println(instant); // 2021-04-08T12:00:00Z
System.out.println(ZoneId.systemDefault()); // Asia/Tokyo
System.out.println(LocalDate.ofInstant(instant, ZoneId.systemDefault())); // 2021-04-08
System.out.println(LocalDate.ofInstant(instant, ZoneOffset.UTC)); // 2021-04-08
System.out.println(LocalDate.ofInstant(instant, ZoneOffset.ofHours(13))); // 2021-04-09
System.out.println(LocalDate.ofInstant(instant, ZoneOffset.ofHours(-13))); // 2021-04-07
static LocalDate ofYearDay (int year, int dayOfYear)
System.out.println(LocalDate.ofYearDay(2021, 1)); // 2021-01-01
System.out.println(LocalDate.ofYearDay(2021, 2)); // 2021-01-02
System.out.println(LocalDate.ofYearDay(2021, 31)); // 2021-01-31
System.out.println(LocalDate.ofYearDay(2021, 32)); // 2021-02-01
System.out.println(LocalDate.ofYearDay(2021, 365)); // 2021-12-31
static LocalDate parse (CharSequence text)
final var date = LocalDate.parse("2021-04-08");
System.out.println(date); // 2021-04-08
//LocalDate.parse("2021/04/03"); // DateTimeParseException
//LocalDate.parse("2021-4-3"); // DateTimeParseException
static LocalDate parse (CharSequence text, DateTimeFormatter formatter)
final var date = LocalDate.parse("2021-04-08", DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(date); // 2021-04-08
final var date = LocalDate.parse("2022/01/01", DateTimeFormatter.ofPattern("y/M/d"));
System.out.println(date); // 2022-01-01
final var date = LocalDate.parse("1999年2月3日", DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
System.out.println(date); // 1999-02-03
LocalDate plus (long amountToAdd, TemporalUnit unit)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plus(1, ChronoUnit.DAYS)); // 2021-05-21
System.out.println(date.plus(2, ChronoUnit.MONTHS)); // 2021-07-20
System.out.println(date.plus(3, ChronoUnit.YEARS)); // 2024-05-20
LocalDate plus (TemporalAmount amountToAdd)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plus(Period.ofDays(1))); // 2021-05-21
System.out.println(date.plus(Period.ofMonths(2))); // 2021-07-20
System.out.println(date.plus(Period.ofYears(3))); // 2024-05-20
System.out.println(date.plus(Period.of(1, 2, 3))); // 2022-07-23
LocalDate plusDays (long daysToAdd)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plusDays(1)); // 2021-05-21
System.out.println(date.plusDays(2)); // 2021-05-22
System.out.println(date.plusDays(20)); // 2021-06-09
System.out.println(date.plusDays(365)); // 2022-05-20
LocalDate plusMonths (long monthsToAdd)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plusMonths(1)); // 2021-06-20
System.out.println(date.plusMonths(2)); // 2021-07-20
System.out.println(date.plusMonths(12)); // 2022-05-20
final var date = LocalDate.of(2021, 3, 31);
System.out.println(date); // 2021-03-31
System.out.println(date.plusMonths(1)); // 2021-04-30
LocalDate plusWeeks (long weeksToAdd)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plusWeeks(1)); // 2021-05-27
System.out.println(date.plusWeeks(2)); // 2021-06-03
System.out.println(date.plusWeeks(20)); // 2021-10-07
System.out.println(date.plusWeeks(100)); // 2023-04-20
LocalDate plusYears (long yearsToAdd)
final var date = LocalDate.of(2021, 5, 20);
System.out.println(date); // 2021-05-20
System.out.println(date.plusYears(1)); // 2022-05-20
System.out.println(date.plusYears(2)); // 2023-05-20
System.out.println(date.plusYears(10)); // 2031-05-20
// うるう年
final var date = LocalDate.of(2020, 2, 29);
System.out.println(date); // 2020-02-29
System.out.println(date.plusYears(1)); // 2021-02-28
<R> R query (TemporalQuery<R> query)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.query(TemporalQueries.precision())); // Days
ValueRange range (TemporalField field)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.range(ChronoField.YEAR)); // -999999999 - 999999999
System.out.println(date.range(ChronoField.MONTH_OF_YEAR)); // 1 - 12
System.out.println(date.range(ChronoField.DAY_OF_MONTH)); // 1 - 30
final var date1 = LocalDate.of(1999, 2, 1);
System.out.println(date1); // 1999-02-01
System.out.println(date1.range(ChronoField.DAY_OF_MONTH)); // 1 - 28
// うるう年
final var date2 = LocalDate.of(2000, 2, 1);
System.out.println(date2); // 2000-02-01
System.out.println(date2.range(ChronoField.DAY_OF_MONTH)); // 1 - 29
long toEpochSecond (LocalTime time, ZoneOffset offset)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
final var time = LocalTime.of(12, 30);
System.out.println(time); // 12:30
final long epochSecond1 = date.toEpochSecond(time, ZoneOffset.UTC);
System.out.println(epochSecond1); // 1617885000
System.out.println(Instant.ofEpochSecond(epochSecond1)); // 2021-04-08T12:30:00Z
final long epochSecond2 = date.toEpochSecond(time, ZoneOffset.ofHours(8));
System.out.println(epochSecond2); // 1617856200
System.out.println(Instant.ofEpochSecond(epochSecond2)); // 2021-04-08T04:30:00Z
String toString ()
final var ret1 = LocalDate.of(2021, 4, 8).toString();
System.out.println(ret1); // 2021-04-08
final var ret2 = LocalDate.MAX.toString();
System.out.println(ret2); // +999999999-12-31
final var ret3 = LocalDate.MIN.toString();
System.out.println(ret3); // -999999999-01-01
Period until (ChronoLocalDate endDateExclusive)
final var date1 = LocalDate.of(2010, 1, 15);
final var date2 = LocalDate.of(2011, 3, 18);
final var period1 = date1.until(date2);
System.out.println(period1.getYears()); // 1
System.out.println(period1.getMonths()); // 2
System.out.println(period1.getDays()); // 3
final var period2 = date2.until(date1);
System.out.println(period2.getYears()); // -1
System.out.println(period2.getMonths()); // -2
System.out.println(period2.getDays()); // -3
final var date1 = LocalDate.of(2021, 2, 2);
final var date2 = LocalDate.of(2021, 3, 1);
final var period = date1.until(date2);
System.out.println(period.getYears()); // 0
System.out.println(period.getMonths()); // 0
System.out.println(period.getDays()); // 27
final var date1 = LocalDate.of(2021, 2, 1);
final var date2 = LocalDate.of(2021, 3, 1);
final var period = date1.until(date2);
System.out.println(period.getYears()); // 0
System.out.println(period.getMonths()); // 1
System.out.println(period.getDays()); // 0
long until (Temporal endExclusive, TemporalUnit unit)
final var date1 = LocalDate.of(2010, 1, 15);
final var date2 = LocalDate.of(2011, 3, 18);
System.out.println(date1.until(date2, ChronoUnit.YEARS)); // 1
System.out.println(date1.until(date2, ChronoUnit.MONTHS)); // 14
System.out.println(date1.until(date2, ChronoUnit.DAYS)); // 427
final var date1 = LocalDate.of(2012, 6, 15);
final var date2 = LocalDate.of(2012, 8, 14);
System.out.println(date1.until(date2, ChronoUnit.YEARS)); // 0
System.out.println(date1.until(date2, ChronoUnit.MONTHS)); // 1
System.out.println(date1.until(date2, ChronoUnit.DAYS)); // 60
LocalDate with (TemporalAdjuster adjuster)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.with(TemporalAdjusters.firstDayOfMonth())); // 2021-04-01
System.out.println(date.with(TemporalAdjusters.lastDayOfMonth())); // 2021-04-30
System.out.println(date.with(Year.of(1999))); // 1999-04-08
System.out.println(date.with(Month.JANUARY)); // 2021-01-08
LocalDate with (TemporalField field, long newValue)
このAPIを使うより、withYear や withMonth といったAPIを代わりに使うことをおすすめします。
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.with(ChronoField.YEAR, 1999)); // 1999-04-08
System.out.println(date.with(ChronoField.MONTH_OF_YEAR, 12)); // 2021-12-08
System.out.println(date.with(ChronoField.DAY_OF_MONTH, 30)); // 2021-04-30
LocalDate withDayOfMonth (int dayOfMonth)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.withDayOfMonth(1)); // 2021-04-01
System.out.println(date.withDayOfMonth(2)); // 2021-04-02
System.out.println(date.withDayOfMonth(29)); // 2021-04-29
System.out.println(date.withDayOfMonth(30)); // 2021-04-30
LocalDate withDayOfYear (int dayOfYear)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.withDayOfYear(1)); // 2021-01-01
System.out.println(date.withDayOfYear(2)); // 2021-01-02
System.out.println(date.withDayOfYear(30)); // 2021-01-30
System.out.println(date.withDayOfYear(31)); // 2021-01-31
System.out.println(date.withDayOfYear(32)); // 2021-02-01
System.out.println(date.withDayOfYear(33)); // 2021-02-02
System.out.println(date.withDayOfYear(365)); // 2021-12-31
LocalDate withMonth (int month)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.withMonth(1)); // 2021-01-08
System.out.println(date.withMonth(2)); // 2021-02-08
System.out.println(date.withMonth(11)); // 2021-11-08
System.out.println(date.withMonth(12)); // 2021-12-08
LocalDate withYear (int year)
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.withYear(1999)); // 1999-04-08
System.out.println(date.withYear(-999)); // -0999-04-08
System.out.println(date.withYear(2030)); // 2030-04-08
ChronoLocalDateで宣言されたメソッド
long toEpochDay ()
final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08
System.out.println(date.toEpochDay()); // 18725
final var date = LocalDate.of(1970, 1, 1);
System.out.println(date); // 1970-01-01
System.out.println(date.toEpochDay()); // 0
final var date = LocalDate.of(1970, 1, 2);
System.out.println(date); // 1970-01-02
System.out.println(date.toEpochDay()); // 1
final var date = LocalDate.of(1970, 2, 1);
System.out.println(date); // 1970-02-01
System.out.println(date.toEpochDay()); // 31
関連記事
- 日付・時刻の基本
- Date, CalendarではなくLocalDateTime, ZonedDateTimeを使おう
- 文字列と日付・時刻の変換
- 日付と時刻、曜日の計算
- 現在時刻(日時)の取得いろいろ
- 現在の曜日(DayOfWeek)を取得
- ZoneIdとZoneOffsetの違い
- API 使用例
- Calendar (カレンダー)
- ChronoLocalDate
- Clock (時計)
- Date (日付・時刻)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- DayOfWeek (曜日)
- Duration (時間の量)
- Era (紀元)
- Instant (時点)
- InstantSource
- JapaneseDate (和暦を使った日付)
- LocalDateTime (日時・タイムゾーンなし)
- LocalTime (時刻・タイムゾーンなし)
- Month (月)
- MonthDay (月・日)
- OffsetDateTime (日時・オフセットあり)
- OffsetTime (時刻・オフセットあり)
- Period (日付の量)
- Temporal
- TemporalAccessor
- TemporalAdjuster (日付・時刻の調整)
- TemporalAdjusters (日付・時刻の調整ユーティリティ)
- TimeZone (タイムゾーン)
- Year (年)
- YearMonth (年・月)
- ZonedDateTime (日時・タイムゾーンあり)
- ZoneId (タイムゾーンID)
- ZoneOffset (タイムゾーン・オフセット)