我想知道如何从java.util.TimeZone
恢复 GMT +1 。例如,我有TimeZone.getTimeZone("Europe/Madrid")
,我想知道值 GMT +1 或TimeZone.getTimeZone("Atlantic/Canary")
GMT 。
答案 0 :(得分:3)
由于问题已经得到解答,但仍然是一个友好的建议使用Joda Date Time API,它非常强大,涵盖了JDK日期和时间类中的所有限制。
干杯
答案 1 :(得分:2)
您可以使用getOffset
方法。此方法需要long date
,因为它会考虑夏令时等。
public static void main(String[] args) throws Exception {
final TimeZone madrid = TimeZone.getTimeZone("Europe/Madrid");
final TimeZone canaries = TimeZone.getTimeZone("Atlantic/Canary");
final long now = System.currentTimeMillis();
System.out.println(madrid.getOffset(now));
System.out.println(canaries.getOffset(now));
}
如您所见,这将返回以毫秒为单位的偏移量
7200000
3600000
然后,您可以使用TimeUnit
转换为小时:
System.out.println(TimeUnit.MILLISECONDS.toHours(madrid.getOffset(now)));
System.out.println(TimeUnit.MILLISECONDS.toHours(canaries.getOffset(now)));
输出:
2
1
答案 2 :(得分:1)
getOffset方法返回以毫秒为单位的差异。
请注意,这些时区也使用DST,它们与UTC的当前偏移量分别为2小时和1小时。