How to Validate Ordinal Dates?



My julian date is in 7 digit format YYYYDDD. I want to make sure all the scenarios of leap years should be covered. Currently I have put a check on days. Is there any utility validating it ?

Answer

I want to make sure all the scenarios of leap years should be covered. Currently I have put a check on days. Is there any utility validating it ?

Yes, simply format the strings to LocalDate using the pattern, uuuuDDD and the leap years will be automatically be taken into consideration by the parsing API.

Demo:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // The 100th day of the year, 2020
        String strDate1 = "2020100";

        // The 100th day of the year, 2019
        String strDate2 = "2019100";

        // Notice 'D' (day-of-year) instead of 'd' (day-of-month)
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuuDDD");

        LocalDate date1 = LocalDate.parse(strDate1, dtf);
        LocalDate date2 = LocalDate.parse(strDate2, dtf);

        System.out.println(date1);
        System.out.println(date2);
    }
}

Output:

2020-04-09
2019-04-10


Source: stackoverflow