【发布时间】:2018-04-16 21:53:21
【问题描述】:
我正在编写一个辅助方法,它采用字符串表示日期并返回 TimeZone
例如:
input: 2017-11-02T09:30:00-07:00
output : "America/Los_Angeles"
(这里的输入是 PST。我使用的是 -7:00 的 UTC 偏移量)
Here is my method
public static String getTimeZone(final String date) {
ZonedDateTime zonedDateTime = ZonedDateTime.parse(date, DateTimeFormatter.ISO_DATE_TIME);
String timezone = TimeZone.getTimeZone(zonedDateTime.getZone()).getAvailableIDs()[0];
System.out.println(timezone);
return timezone;
}
当我输入上述日期时,我得到Africa/Abidjan,这是完全不正确的。
我更喜欢“America/Los_Angeles”,但至少是正确的。从某种意义上说,我在这里得到的完全错误,在阿比让和洛杉矶的时间非常不同。
到达这里的正确方法是什么?
【问题讨论】:
-
这个线程出了点问题。当您可以使用现代 Java 日期和时间 API(包括
ZonedDateTime)时,我坚信也使用过时的TimeZone类是没有意义的。更喜欢现代的ZoneId。它的静态getAvailableZoneIds方法将为您提供可用的时区。
标签: date datetime java-8 localdate zoneddatetime