Java 如何知道时区与UTC的差异?
我想知道如何从java.util.TimeZone恢复GMT+1。例如,我有TimeZone.getTimeZoneEurope/Madrid,我想知道值是GMT+1或TimeZone.GetTimeZoneLantic/Canary是GMT。您可以使用getOffset方法。此方法需要较长的日期,因为它考虑了夏令时等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
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?