使用格式为DateTimeFormatter
的{{1}}时,会发生奇怪的事情...... "yyMMdd"
格式化为LocaleDate.of(0,1,5)
,但“000105”已正确解析为"010105"
}。为什么???
进行测试:
LocalDate.of(2015, 1, 5)
答案 0 :(得分:4)
我为@Lachezar Balev的正确答案添加了补充说明。用yy模式打印第0年(超过两千年前)意味着:使用年份的两位数形式,相当于1个BCE 的预感格里高利年0。因此,您会在格式化输出010105中看到第1年。
如果您使用了模式uuMMdd(u = proleptic gregorian year),那么输出确实会与您的期望值000105相符,但由于输入错误仍然存在错误。
答案 1 :(得分:3)
你的困惑来自于:
LocalDate.of(0, 1, 5);
你指定了零年,即2000年之前的千年:
LocalDate.of(2000, 1, 5);
最后一个输出000105
。
更新: @Meno Hochschild添加了进一步的解释,我还会链接this好问题以供参考。