我寫一個輔助方法,該方法日期的字符串表示,並返回時區的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'方法將爲您提供可用的時區。 –