java年份0000

时间:2011-12-09 02:56:49

标签: java date

当我解析年份为0000的日期时,它似乎存储为年份0001。

请参阅下面的代码:

String dateStr = "00000102";
System.out.println(dateStr);
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = dateFormat.parse("00000102");
String convertedStr = dateFormat.format(date);
System.out.println(convertedStr);

输出如下:

00000102
00010102

有没有办法使用标准Java API在Java中表示0000年?

3 个答案:

答案 0 :(得分:10)

我不相信这是可能的,因为java.util.Date基于UTC,基于Gregorian calendar,而公历没有零年。

  

......传统的公历格里高利历(如朱利安历法)没有0年,而是使用序数1,2,...,AD和BC年。因此,传统的时间线是2 BC,1 BC,AD 1和AD 2.

(资料来源:The Wikipedia article on the Gregorian calendar

答案 1 :(得分:2)

我不认为日历是零基础的。公元1年之前有1 BC。没有0.

另外:您正在构建哪种应用程序需要处理那个时代的日期?如果您需要覆盖该区域,请考虑this:“使用GregorianCalendar获得的日期在历史上仅从公元3月1日开始准确,当时采用现代Julian日历规则。在此日期之前,应用闰年规则不规则地,在公元前45年之前,朱利安历法甚至都不存在。“

答案 2 :(得分:1)

公历0中不存在0年级。来自Year 0 at Wikipedia

  

“零年”在广泛使用的公历或其前身朱利安历法中不存在。在这些系统下,公元前1年之后是公元1年。

     

...

     

缺少一年0导致一些关于较长小数区间界限的混淆,例如几十年和几个世纪。例如,公历的第三个千年于2001年1月1日星期一开始,而不是2000年1月1日广为人知的星期六。同样,20世纪始于1901年1月1日。

     

...