这个问题在这里已经有答案了:
为什么java的java.time.format.datetimeformatter#format(localdatetime)会增加一年(1个答案)
SimpleDataFormat解析“yyyy-mm-dd hh:mm”时产生错误的日期时间(5个答案)
y返回2012,y返回2011,格式为simpledateformat(5个答案)
java SimpleDataFormat解析错误的日期(2个答案)
java解析字符串到一个日期返回不正确的日期(5个答案)
8天前关门了。
遇到 ZonedDateTime
格式化问题。它将2020年12月底的日期格式化为2021年的日期。java代码段
ZonedDateTime z1 = ZonedDateTime.of(LocalDateTime.of(2020, 12, 31, 0, 0), ZoneId.of("America/New_York"));
z1.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"))
// yields "2021-12-31"
12月28日、29日、30日也是如此。不同时区的结果相同。2019年12月30日重复(格式为2020-12-30)。
原始clojure片段
(let [zdt (ZonedDateTime/of (LocalDateTime/of 2020 12 31 0 0) (ZoneId/of "America/New_York"))
f (DateTimeFormatter/ofPattern "YYYY-MM-dd")]
(.format zdt f))
; => "2021-12-31"
我可以复制:
macos热点java 10(java版本“10.0.2”2018-07-17)
openjdk版本“11.0.9.1”2020-11-04
如果您对lisps还满意,那么您可以在cloud repl中看到它
2条答案
按热度按时间vohkndzv1#
将模式字符串更改为
yyyy-MM-dd
. 请参阅javadoc以获取类DateTimeFormatter
了解YYYY
以及yyyy
.结果:
kuhbmx9i2#
好的,找到了。只是我的格式错误。
y代表以周为单位的年
y代表纪年
你只是一年
所以使用
"uuuu-MM-dd"
一切正常