gur*_*ing 4 java datetime dateformatter
这是漫长的一天,我的大脑很累,所以也许我完全错过了一些东西,但为什么当我运行这条线时,
System.out.println(
DateTimeFormatter.ofPattern("YYYYMMdd")
.withZone(ZoneId.of("UTC"))
.format(Instant.parse("2020-12-31T08:00:00Z"))
)
)
Run Code Online (Sandbox Code Playgroud)
我得到20211231而不是20201231?额外的一年从哪里来?
小智 7
你想要小写 y -
System.out.println(
DateTimeFormatter.ofPattern("yyyyMMdd")
.withZone(ZoneId.of("UTC"))
.format(Instant.parse("2020-12-31T08:00:00Z"))
);
Run Code Online (Sandbox Code Playgroud)
Y根据DateTimeFormatter的官方文档,大写字母代表基于周的年份。有关如何计算的更多信息,请参见此处。
y如果您使用带有小写字母的日期格式化程序,则效果很好yyyyMMdd。
System.out.println(DateTimeFormatter.ofPattern("yyyyMMdd").withZone(ZoneId.of("UTC"))
.format(Instant.parse("2020-12-31T08:00:00Z")));
Run Code Online (Sandbox Code Playgroud)
输出:
20201231
Run Code Online (Sandbox Code Playgroud)
根据 的文档DateTimeFormatter,Y是基于周的年份。这意味着返回日期所在周的年份数。
事实上,2020 年 12 月 31 日实际上是 2021 年的第一周,因此返回的是 2021 年而不是 2020 年。
您可能想使用yyyy它。
| 归档时间: |
|
| 查看次数: |
8995 次 |
| 最近记录: |