当我解析年份为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年?
答案 0 :(得分:10)
我不相信这是可能的,因为java.util.Date
基于UTC,基于Gregorian calendar,而公历没有零年。
......传统的公历格里高利历(如朱利安历法)没有0年,而是使用序数1,2,...,AD和BC年。因此,传统的时间线是2 BC,1 BC,AD 1和AD 2.
答案 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日。
...