将TimeZone偏移量转换为TimeZone文本

问题描述 投票:0回答:1

我的格式为“2019-04-25T16:34:28-05:00”。我用joda-time解析了字符串“yyyy-MM-dd'T'HH:mm:ssZ”。

DateTimeFormatter df = DateTimeFormat.forPattern(formatStr);
DateTime temp = df.parseDateTime(dateStr);

它在DateTime中输出为“2019-04-25T15:34:28.000-06:00”。

直到这一切似乎都正确,但我想要输出TimeZone文本,如“04-25-2019 03:34 PM CDT”。

我通过以下方式格式化DateTime对象:

DateTimeFormatter format = DateTimeFormat.forPattern("MM-dd-yyyy 
hh:mm a z");

但我得到-06:00的输出仍为“04-25-2019 03:34 PM -06:00”。

如何获取像“CDT”这样的时区名称来代替偏移?

datetime jodatime java-6
1个回答
3
投票

如何获取像“CDT”这样的时区名称来代替偏移?

你不能。 -05:00可能是CDT,但它也可以适用于大量其他时区。例如,美国的EST,或者巴西的ACT或秘鲁的PET,或许多其他......

即使您要将此问题限制在美国时区,请考虑MSTPDT都是UTC-7,尽管MST全年适用于亚利桑那州的大部分地区,而PDT仅适用于太平洋时区的夏令时。如果你在夏天给你一个-07:00偏移量的时间戳,就不可能知道它属于哪个,甚至限制在美国。

换句话说,为了知道要使用哪个缩写,您必须提供时区标识符(例如America/Los_Angeles),而不仅仅是偏移量。

另请参阅the timezone tag wiki中的“时区!=偏移”。

© www.soinside.com 2019 - 2024. All rights reserved.