1

我想知道如何java.util.TimeZone. 例如,我有TimeZone.getTimeZone("Europe/Madrid")并且我想知道该值是GMT +1还是GMTTimeZone.getTimeZone("Atlantic/Canary")

4

3 回答 3

3

由于问题已经得到解答,但仍然是一个友好的建议使用Joda Date Time API,它非常强大,涵盖了 JDK Date 和 Time 类中存在的所有限制。

干杯

于 2013-07-26T08:25:09.530 回答
2

你可以使用getOffset方法。此方法需要 a 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
于 2013-07-26T07:35:12.603 回答
1

getOffset 方法以毫秒为单位返回差值。

请注意,这些时区也使用 DST,它们与 UTC 的当前偏移量分别为 2 小时和 1 小时。

于 2013-07-26T07:36:32.297 回答