我想将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 )? –