javabeginner

Java Date/Time API — Modern Operations

Work with LocalDate, LocalDateTime, ZonedDateTime, Duration, Period, and date formatting.

java
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.*;
import java.util.Locale;

public class DateTimeDemo {
    public static void main(String[] args) {
        // Current date/time
        LocalDate today = LocalDate.now();
        LocalDateTime now = LocalDateTime.now();
        ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("America/New_York"));

        // Create specific dates
        LocalDate birthday = LocalDate.of(1990, Month.JUNE, 15);
        LocalTime meetingTime = LocalTime.of(14, 30);

        // Arithmetic
        LocalDate nextWeek = today.plusWeeks(1);
        LocalDate lastMonth = today.minusMonths(1);
        LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
        LocalDate nextFriday = today.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));

        // Duration (time-based) and Period (date-based)
        Duration duration = Duration.between(LocalTime.of(9, 0), LocalTime.of(17, 30));
        System.out.println("Work hours: " + duration.toHours() + "h " + duration.toMinutesPart() + "m");

        Period age = Period.between(birthday, today);
        System.out.printf("Age: %d years, %d months%n", age.getYears(), age.getMonths());

        // Formatting
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("MMM dd, yyyy HH:mm");
        System.out.println(now.format(fmt)); // Apr 14, 2026 10:30

        DateTimeFormatter iso = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        System.out.println(now.format(iso)); // 2026-04-14T10:30:00

        // Parsing
        LocalDate parsed = LocalDate.parse("2026-01-15");
        LocalDateTime parsedDt = LocalDateTime.parse("2026-01-15T10:30:00");

        // Timezone conversion
        ZonedDateTime nyTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
        ZonedDateTime tokyoTime = nyTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
        System.out.printf("NY: %s → Tokyo: %s%n",
            nyTime.format(fmt), tokyoTime.format(fmt));

        // Check business day
        boolean isWeekend = today.getDayOfWeek() == DayOfWeek.SATURDAY
                         || today.getDayOfWeek() == DayOfWeek.SUNDAY;
        System.out.println("Weekend: " + isWeekend);
    }
}

Use Cases

  • Date arithmetic and business day calculations
  • Timezone conversions for global applications
  • Date formatting and parsing for APIs

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.