我想將Europe/London
時間的dateTime字符串轉換爲UTC。從歐洲/倫敦時間轉換爲UTC時的問題
谷歌搜索告訴我,UTC應該在Europe/London
時間後面一小時,但是當我試圖編寫一個單元測試來驗證這個時間計算結果在相同的時代。我也嘗試從另一個時區(Asia/Kolkata
),並正常工作。所以我很困惑,不確定我做錯了什麼。
下面是我使用的功能(與2017-01-15 13:00:00
一個dateString兩者上述時區)
long getUTCTimeEpoch(final String dateString, @NonNull final String fromTimeZone) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
formatter.setTimeZone(TimeZone.getTimeZone(fromTimeZone));
try {
Date inputTime = formatter.parse(dateString);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(fromTimeZone));
calendar.setTime(inputTime);
Calendar utcCalendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
utcCalendar.setTimeInMillis(calendar.getTimeInMillis());
return utcCalendar.getTime().getTime();
} catch (ParseException e) {
return 0;
}
}
這工作,
assertThat(getUTCTimeEpoch(timeString, "Asia/Kolkata"), is(1484465400000))
和失敗,
assertThat(getUTCTimeEpoch(timeString, "Europe/London"), is(1484481600000))
是否有可能使用更現代化的時間庫,比如三個十個abp? –
這是我現在需要做的唯一的地方,所以最好不要,但即使我這樣做,我仍然想知道爲什麼上述不起作用 –
您是否考慮了DST(存在於倫敦但不是utc )? –