如何知道TimeZone与UTC的区别?

时间:2013-07-26 07:32:30

标签: java timezone

我想知道如何从java.util.TimeZone恢复 GMT +1 。例如,我有TimeZone.getTimeZone("Europe/Madrid"),我想知道值 GMT +1 TimeZone.getTimeZone("Atlantic/Canary") GMT

3 个答案:

答案 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小时。