我想知道如何从java.util.TimeZone
. 例如,我有TimeZone.getTimeZone("Europe/Madrid")
并且我想知道该值是GMT +1还是GMT。TimeZone.getTimeZone("Atlantic/Canary")
问问题
150 次
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 回答