Java : LocalDate with Examples
LocalDate (Java SE 18 & JDK 18) with Examples.
You will find code examples on most LocalDate methods.
Summary
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
Fields
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
Methods
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-07:00[America/Los_Angeles]
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-08:00[America/Los_Angeles]
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-07:00[America/Los_Angeles]
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)
Please see atStartOfDay().
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)
Please see atTime(int hour, int minute).
LocalDateTime atTime (int hour, int minute, int second, int nanoOfSecond)
Please see atTime(int hour, int minute).
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)
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);
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);
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("MM/dd/yyyy"));
System.out.println(ret3); // 04/07/2021
}
{
System.out.println(Locale.getDefault()); // en_US
final var ret1 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
System.out.println(ret1); // Wednesday, April 7, 2021
final var ret2 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
System.out.println(ret2); // April 7, 2021
final var ret3 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM));
System.out.println(ret3); // Apr 7, 2021
final var ret4 = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));
System.out.println(ret4); // 4/7/21
}
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-08:00[America/Los_Angeles]
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)
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)
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)
// Clock advanced for 5 days.
final var clock = Clock.offset(Clock.systemDefaultZone(), Duration.ofDays(5));
System.out.println(LocalDate.now()); // 2022-01-24
System.out.println(LocalDate.now(clock)); // 2022-01-29
static LocalDate now (ZoneId zone)
System.out.println(ZonedDateTime.now()); // 2022-01-24T00:49:30.741607400-08:00[America/Los_Angeles]
System.out.println(LocalDate.now()); // 2022-01-24
System.out.println(LocalDate.now(ZoneOffset.ofHours(-18))); // 2022-01-23
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()); // America/Los_Angeles
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("2/3/1999", DateTimeFormatter.ofPattern("M/d/y"));
System.out.println(date); // 1999-02-03
final var date = LocalDate.parse("April 7, 2021", DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
System.out.println(date); // 2021-04-07
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)
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
Methods declared in 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
Related posts
- Get the current time
- Basics of Date and Time
- Don't use the legacy Date and Calendar classes, use new APIs instead
- API Examples
- 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
- ZoneOffset