Search code examples
javadate

How to get start and end date of a year?


I have to use the Java Date class for this problem (it interfaces with something out of my control).

How do I get the start and end date of a year and then iterate through each date?


Solution

  • java.time

    Using java.time library built into Java 8 and later. Specifically the LocalDate and TemporalAdjusters classes.

    import java.time.LocalDate
    import static java.time.temporal.TemporalAdjusters.firstDayOfYear
    import static java.time.temporal.TemporalAdjusters.lastDayOfYear
    
    LocalDate now = LocalDate.now(); // 2015-11-23
    LocalDate firstDay = now.with(firstDayOfYear()); // 2015-01-01
    LocalDate lastDay = now.with(lastDayOfYear()); // 2015-12-31
    

    If you need to add time information, you may use any available LocalDate to LocalDateTime conversion like

    lastDay.atStartOfDay(); // 2015-12-31T00:00