我写一个辅助方法,该方法日期的字符串表示,并返回时区的java 8得到的时区zonedLocalTime
例如:
input: 2017-11-02T09:30:00-07:00
output : "America/Los_Angeles"
(此处的输入为PST我使用UTC偏差-7:00)
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'方法将为您提供可用的时区。 –