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