Java getDate 0000/00/00返回奇怪值
为什么会发生这种情况?对于月和日,我认为Java假定上一个有效的月和日,但我不理解为什么年是2Java getDate 0000/00/00返回奇怪值,java,Java,为什么会发生这种情况?对于月和日,我认为Java假定上一个有效的月和日,但我不理解为什么年是2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date result = sdf.parse("0000/00/00"); System.out.println(result.toString()); 输出为: Sun Nov 30 00:00:00 GMT 2 日期的起点为0000101 ei年份-1、月份-1和日期-1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date result = sdf.parse("0000/00/00");
System.out.println(result.toString());
输出为:
Sun Nov 30 00:00:00 GMT 2
日期的起点为
0000101
ei年份-1、月份-1和日期-1
您输入的是00000000
将以月-00开始表示1月-1日
ie 12月
日期00
平均12月1日-1日
ie11月30日
这解释了输出的第一部分<代码>11月30日星期日00:00:00 GMT
给出的年份00
表示年份1减去1。公元前1年
随着年份的倒转,这个月的另一个时间和日期是公元前2年
因此,年份显示为2。公历没有0年 第0年对应1BCE(在普通纪元之前,也称为BC) 因为您为月份提供0,为当天提供0,所以它会回滚到上个月和上一年 即公元前0002年11月30日
Date#toString
不包含BCE/CE后缀。在绝大多数情况下,这是多余的
如果要处理的日期要追溯到很久以前,则需要咨询历史学家。默认情况下
SimpleDateFormat
会尝试解析甚至不正确的输入。您可以使用以下方法关闭此功能:
这样,您将有一个例外,这可能更适合您的情况:
Exception in thread "main" java.text.ParseException: Unparseable date: "0000/00/00"
at java.text.DateFormat.parse(DateFormat.java:366)
at Snippet.main(Snippet.java:11)
不知道你想做什么…@AliGajani可能想问一个著名的问题“垃圾输入,垃圾输出”。@aioobe在java中更常见的是垃圾输入,例外输出。op只是看到了一些奇怪的东西,并试图理解是什么驱动了结果。@couling,API的设计日期留下了很大的改进空间。解释得很好。非常感谢。
Exception in thread "main" java.text.ParseException: Unparseable date: "0000/00/00"
at java.text.DateFormat.parse(DateFormat.java:366)
at Snippet.main(Snippet.java:11)