Java 如何知道时区与UTC的差异?

Java 如何知道时区与UTC的差异?,java,timezone,Java,Timezone,我想知道如何从java.util.TimeZone恢复GMT+1。例如,我有TimeZone.getTimeZoneEurope/Madrid,我想知道值是GMT+1或TimeZone.GetTimeZoneLantic/Canary是GMT。您可以使用getOffset方法。此方法需要较长的日期,因为它考虑了夏令时等 public static void main(String[] args) throws Exception { final TimeZone madrid = Tim

我想知道如何从java.util.TimeZone恢复GMT+1。例如,我有TimeZone.getTimeZoneEurope/Madrid,我想知道值是GMT+1或TimeZone.GetTimeZoneLantic/Canary是GMT。

您可以使用getOffset方法。此方法需要较长的日期,因为它考虑了夏令时等

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
然后,您可以使用时间单位转换为小时:

System.out.println(TimeUnit.MILLISECONDS.toHours(madrid.getOffset(now)));
System.out.println(TimeUnit.MILLISECONDS.toHours(canaries.getOffset(now)));
输出:

2
1
您可以使用getOffset方法。此方法需要较长的日期,因为它考虑了夏令时等

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
然后,您可以使用时间单位转换为小时:

System.out.println(TimeUnit.MILLISECONDS.toHours(madrid.getOffset(now)));
System.out.println(TimeUnit.MILLISECONDS.toHours(canaries.getOffset(now)));
输出:

2
1

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


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

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


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

因为问题已经得到了回答,但仍然是一个友好的建议使用,它非常强大,涵盖了JDK日期和时间类中的所有限制


干杯

问题已经回答,但仍然是一个友好的建议使用,它非常强大,涵盖了JDK日期和时间类中的所有限制

干杯

你的意思是喜欢时区。getOffsettime?你的意思是像TimeZone.getOffsettime?