Java 如何验证顺序日期?

Java 如何验证顺序日期?,java,spring,date,Java,Spring,Date,我的儒略日期是7位格式的YYYYDDD。 我想确保涵盖闰年的所有情景。目前我已经把支票放在了天上。是否有任何实用程序验证它?序号日期 “朱利安”是一个错误的日期表示为一年与日期的年数。是个更好的名字 因为顺序日期与时间无关,所以用词不当会引起混淆。这个用词不当很可能是由于对天文学中使用的计数方法的误解 DateTimeFormatter 使用自定义格式定义。在自定义格式模式中,使用三个大写字母-D,DDD,表示年中的日期 尝试分析字符串输入。DateTimeParseException的陷阱 D

我的儒略日期是7位格式的YYYYDDD。 我想确保涵盖闰年的所有情景。目前我已经把支票放在了天上。是否有任何实用程序验证它?

序号日期 “朱利安”是一个错误的日期表示为一年与日期的年数。是个更好的名字

因为顺序日期与时间无关,所以用词不当会引起混淆。这个用词不当很可能是由于对天文学中使用的计数方法的误解

DateTimeFormatter
使用自定义格式定义。在自定义格式模式中,使用三个大写字母-D,
DDD
,表示年中的日期

尝试分析字符串输入。
DateTimeParseException
的陷阱

DateTimeFormatter f=DateTimeFormatter.of模式(“UUDDD”);
尝试
{
LocalDate ld=LocalDate.parse(输入);
} 
捕获(DateTimeParse异常)
{
//处理错误输入
}
ISO 8601 我建议您向数据发布者提供有关格式的教育。序数日期的标准格式为8个字符,在年份和年份号之间使用连字符。
DateTimeFormatter
类将该格式定义为常量:。我强烈建议您在以文本形式交换日期时间值时坚持ISO 8601格式

有关更多说明,请参见关于类似问题的说明

我想确保涵盖闰年的所有情景。 目前我已经把支票放在了天上。是否有任何实用程序验证 是吗

是的,只需使用模式将字符串格式化为
LocalDate
,解析API就会自动考虑闰年

演示:

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);
    }
}
2020-04-09
2019-04-10
输出:

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);
    }
}
2020-04-09
2019-04-10

@BasilBourque公平地说,这些答案没有提到如何验证日期。@FedericoklezCulloca指出。我重新提出这个问题。谢谢你指出我的错误。我也会在这里给出答案。朱利安的约会已经过时了。只需检查YY的最后2位是4的倍数。但我们把公历改成了几个世纪(在世界上的大部分地区)。@GiacomoCatenazzi这个问题是关于,而不是关于。“朱利安日期”是“序数日期”的常见误称。这个用词不当很可能是由于对天文学中使用的计数方法的误解。