Java ZoneDateTime.format问题
遇到Java ZoneDateTime.format问题,java,zoneddatetime,datetimeformatter,Java,Zoneddatetime,Datetimeformatter,遇到zoneDateTime格式问题。它将2020年12月底的日期格式化为2021年的日期。 Java代码片段 ZonedDateTime z1=ZonedDateTime.of(LocalDateTime.of(2020,12,31,0,0),ZoneId.of(“美国/纽约”); z1.格式(模式的DateTimeFormatter.of(“YYYY-MM-dd”)) //收益率“2021-12-31” 12月28日、29日、30日也是如此。不同时区的结果相同。 2019年12月30日重复
zoneDateTime
格式问题。它将2020年12月底的日期格式化为2021年的日期。
Java代码片段
ZonedDateTime z1=ZonedDateTime.of(LocalDateTime.of(2020,12,31,0,0),ZoneId.of(“美国/纽约”);
z1.格式(模式的DateTimeFormatter.of(“YYYY-MM-dd”))
//收益率“2021-12-31”
12月28日、29日、30日也是如此。不同时区的结果相同。
2019年12月30日重复(格式为2020-12-30)
原始Clojure片段
(让[zdt(ZonedDateTime/of(LocalDateTime/of 2020 12 31 0 0)(ZoneId/of“美国/纽约”))
f(DateTimeFormatter/of模式“YYYY-MM-dd”)]
(.格式zdt f))
; => "2021-12-31"
我能够在以下方面复制:
- MacOS HotSpot Java 10(Java版本“10.0.2”2018-07-17)
- OpenJDK版本“11.0.9.1”2020-11-04
如果您可以使用Lisps–您可以在cloud REPL中自己看到它将模式字符串更改为
yyyy-MM-dd
。
请参阅类DateTimeFormatter
,了解YYYY
和YYYY
之间的区别
ZonedDateTime z1=ZonedDateTime.of(LocalDateTime.of(2020,12,31,0,0),ZoneId.of(“美国/纽约”);
System.out.println(z1.format(模式的DateTimeFormatter.of(“yyyy-MM-dd”));
结果:
2020-12-31
好的,找到了。这只是我的格式错误
- Y表示以周为基础的年份
- y代表纪年
- 你只是一年
因此,使用
“uuu MM dd”
这一切都是有效的是的,或者更简单地说,DateTimeFormatter.ISO\u LOCAL\u DATE
。