gpt4 book ai didi

java - 使用 DateTimeFormatter 显示短时区名称

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:07 27 4
gpt4 key购买 nike

我有以下 DateTimeFormatter

DateTimeFormatter DATE_TIME_FORMATTER = 
DateTimeFormatter.ofPattern("MM/dd/yyyy 'at' hh:mm:ss a zzzz");

我正在使用它来格式化 ZonedDateTime,如下所示:

ZonedDateTime disableTime = Instant.now()
.plus(Duration.ofDays(21))
.atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(-5)));
System.out.println(DATE_TIME_FORMATTER.format(disableTime));

我希望输出格式化的日期字符串,如下所示:

09/16/2015 at 01:15:45 PM EDT

但是得到的输出是这样的:

09/16/2015 at 01:15:45 PM UTC-05:00

无论我在模式中使用 zzzzzz 还是 zzzz,它总是得到上述格式的输出。

是否有不同的方法来创建 ZonedDateTime 以提供所需的输出,或者我在模式中做错了什么?

根据 DateTimeFormatter documentation , O应该用来显示本地化的时差,比如UTC-05:00,而z应该用来显示时区名称,例如 Eastern Daylight TimeEDT

最佳答案

这是因为您使用了匿名的 UTC 偏移量。尝试使用命名的 ZoneId

ZonedDateTime disableTime = Instant.now()
.plus(Duration.ofDays(21))
.atZone(ZoneId.of("Africa/Nairobi"));

打印(“Ora dell'Africa orientale”是意大利本地化名称)

09/16/2015 at 09:34:44 PM Ora dell'Africa orientale

您可以获得可用名称的列表,这些名称应该用于存储和检索用户的首选项

Set<String> ids = ZoneId.getAvailableZoneIds();

关于java - 使用 DateTimeFormatter 显示短时区名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32233987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com