Working with Date and Time API

1. Using LocalDate

Example: LocalDate

LocalDate today = LocalDate.now();
LocalDate ymd = LocalDate.of(2026, 5, 12);
LocalDate parsed = LocalDate.parse("2026-05-12");
LocalDate plus = today.plusDays(7).plusMonths(1);
MethodDetail
now() / of(y,m,d) / parse(s)Factories
plus/minus(amount, unit)Arithmetic
getYear/getMonth/getDayOfMonthExtract
isBefore/isAfter/isEqualComparison

2. Using LocalTime

MethodDetail
LocalTime.of(14, 30, 0)HH, MM, SS
plusHours/Minutes/Seconds/NanosArithmetic
truncatedTo(MINUTES)Reset smaller fields

3. Using LocalDateTime

MethodDetail
now() / of(...) / parse(s)Factories
toLocalDate() / toLocalTime()Extract parts
atZone(zone)Convert to ZonedDateTime

4. Using ZonedDateTime

Example: ZonedDateTime

ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
ZonedDateTime ny = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));
MethodUse
withZoneSameInstant(z)Same moment, different zone
withZoneSameLocal(z)Same wall-clock, different zone
toInstant()UTC instant

5. Using Instant

MethodDetail
Instant.now()UTC current
Instant.ofEpochSecond(s)Seconds since 1970-01-01T00:00Z
toEpochMilli()Milliseconds

6. Using Duration

MethodDetail
Duration.ofMinutes(5)Time-based
Duration.between(t1, t2)Compute
toMillis/toSeconds/toMinutes/toHoursConvert
plus / minus / multipliedByArithmetic

7. Using Period

MethodDetail
Period.of(1, 6, 0)1 yr 6 mo 0 days
Period.between(d1, d2)Date difference
getYears/getMonths/getDaysComponents

8. Formatting Dates

Example: Format/parse

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
String s = LocalDateTime.now().format(fmt);
LocalDateTime back = LocalDateTime.parse(s, fmt);
PatternMeaning
yyyyYear
MM / MMM / MMMMNumeric / Short / Full
ddDay of month
HH / hh24h / 12h
mm / ssMinutes / Seconds
SSSMillis
z / Z / XZone

9. Parsing Dates

MethodUse
LocalDate.parse(s)ISO format default
LocalDate.parse(s, fmt)Custom formatter
Standard formattersDateTimeFormatter.ISO_DATE/ISO_DATE_TIME/RFC_1123_DATE_TIME

10. Manipulating Dates

MethodDetail
plusX/minusXAdd/subtract
withYear/Month/DayOfMonth(n)Replace component
with(TemporalAdjusters.firstDayOfMonth())Predefined adjusters

11. Comparing Dates

MethodReturns
isBefore(b) / isAfter(b) / isEqual(b)boolean
compareTo(b)int
equals(b)Considers chronology + zone

12. Working with Time Zones

ClassDetail
ZoneIdRegion ID (e.g., Asia/Tokyo)
ZoneOffsetFixed offset from UTC
ZoneId.systemDefault()JVM default
ZoneId.getAvailableZoneIds()All zones

13. Understanding Clock Class

MethodUse
Clock.systemUTC() / systemDefaultZone()Real clocks
Clock.fixed(instant, zone)Testing
LocalDate.now(clock)Pass clock for test isolation