首页 > 解决方案 > Java如何管理夏令时?

问题描述

很多人都知道,在欧洲,我们有一个夏季和一个冬季。每年两次,所有欧盟成员国的时钟从冬季切换到夏季(3 月的最后一个星期日),然后从夏季切换到冬季(10 月的最后一个星期日)(更多信息在这里)。现在,欧盟委员会即将提议取消这些时钟变化。

在 Java 中,我们有日历,而且日历总是知道正确的时区(即 GMT+1 表示夏季,GMT+2 表示冬季)。Java如何管理这个?而且,如果它发生了变化,它将如何影响我们的系统?

所以,正如我在评论中看到的那样,不应该有任何变化,因为 Java 使用系统时间并且它是由 NTP 设置的,对吧?

标签: java

解决方案


我会说java.util.TimeZone

TimeZone表示时区偏移,还计算夏令时。通常,您会得到一个TimeZoneusing ,它根据程序运行的时区getDefault创建一个。TimeZone例如,对于在日本运行的程序,getDefault创建一个TimeZone object基于日本标准时间的程序。

您还可以TimeZone使用getTimeZone时区 ID。例如,美国太平洋时区的时区 ID 是“America/Los_Angeles”。因此,您可以通过以下方式获取美国太平洋时间 TimeZone 对象:

TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");

推荐阅读