java.util.TimeZone日光信息是如何更新的?
我找不到一个类似的问题,所以就这样 我需要创建一些警报,并基本确定夏时制何时到来,即下周四开始夏时制 问题时区如何知道正确的信息java.util.TimeZone日光信息是如何更新的?,java,timezone,dst,Java,Timezone,Dst,我找不到一个类似的问题,所以就这样 我需要创建一些警报,并基本确定夏时制何时到来,即下周四开始夏时制 问题时区如何知道正确的信息 我这样问是因为,例如,在我的国家——巴西,这一天是政府在一年前确定的。它甚至可能不存在于特定的年份。这可能也发生在其他国家 在上,可以找到以下信息: 如果基础时区实现子类支持历史夏令时时间表和GMT偏移量更改,则此方法返回历史上正确的偏移量值 它说它返回一个历史上正确的。但是这种检测时区的方法有多可靠呢?它是否依赖于常规的java更新,例如,它是否从Windows中的
我这样问是因为,例如,在我的国家——巴西,这一天是政府在一年前确定的。它甚至可能不存在于特定的年份。这可能也发生在其他国家 在上,可以找到以下信息: 如果基础时区实现子类支持历史夏令时时间表和GMT偏移量更改,则此方法返回历史上正确的偏移量值 它说它返回一个历史上正确的。但是这种检测时区的方法有多可靠呢?它是否依赖于常规的java更新,例如,它是否从Windows中的某个地方读取 提前谢谢 时区更新工具 下面的链接解释了使用时区更新工具在Java中更新时区的官方方法 基本上,下载工具jar并运行命令
java-jar tzupdater.jar选项
每个java实现都有自己的时区定义集副本,由Paul Eggert和
时区的定义和规则确实经常变化。世界各地的政治家都表现出了改变其管辖范围内时区的倾向。你关心这个问题是对的
Java实现的更新通常会附带新的tzdata
不幸的是,政客们有时会在几乎没有或根本没有预警的情况下改变自己的时区,而忽略了这场灾难。有时通知只有几个月,甚至几个星期。例如近年来的俄罗斯、土耳其和摩洛哥。就朝鲜而言,他们最后一次的改变根本没有任何预警
如果您感兴趣的时区在没有任何警告的情况下被更改,那么您可能没有时间等待Java实现的更新版本。因此,您可能需要自己获取新的tzdata,并手动更新已安装的Java实现。有关如何使用Oracle提供的时区更新工具执行此操作的信息,请参阅
请注意,您还需要更新其他地方的时区日期。这些包括您的主机和一些数据库系统,例如
你问: 它是否依赖于常规的java更新,例如,它是否从Windows中的某个地方读取 Java保留自己的时区供Java应用程序使用。您的主机操作系统保留自己的时区数据供自己使用,也供某些本机应用程序使用。其他一些系统,例如,可能保留自己的时区数据 你说: 基本上确定夏时制何时开始,即下周四夏时制开始 请记住,这不是时区更改其与UTC的偏移量的唯一原因。时区因各种政治、外交、军事和文化原因而变化 下面是确定下一个转换的Java代码 永远不要使用,因为它是有问题的遗留日期时间类的一部分。这些类在几年前被JSR310中定义的现代java.time类所取代 将您感兴趣的时区指定为对象 以
大陆/地区
的格式指定,例如美国/蒙特利尔
,非洲/卡萨布兰卡
,或太平洋/奥克兰
。切勿使用2-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)
ZoneId z=ZoneId.of(“美国/圣保罗”);
获取该区域的规则。查询所有已知转换的列表规则
ZoneRules规则=z.getRules();
列表转换=rules.getTransitions();
transitions.stream().forEach(System.out::println);
过渡[1914-01-01T00:00-03:06:28至-03:00的间隙]
过渡[1931-10-03T11:00-03:00至-02:00的间隙]
过渡段【1932-04-01T00:00-02:00至-03:00重叠】
过渡[1932-10-03T00:00-03:00至-02:00的间隙]
过渡段【1933-04-01T00:00-02:00至-03:00重叠】
过渡[1949-12-01T00:00-03:00至-02:00的间隙]
过渡段【1950-04-16T01:00-02:00至-03:00重叠】
过渡[1950-12-01T00:00-03:00至-02:00的间隙]
过渡段【1951-04-01T00:00-02:00至-03:00重叠】
过渡[1951-12-01T00:00-03:00至-02:00的间隙]
过渡段【1952-04-01T00:00-02:00至-03:00重叠】
过渡[1952-12-01T00:00-03:00至-02:00的间隙]
过渡[在1953-03-01T00:00-02:00至-03:00时重叠]
过渡[1963-10-23T00:00-03:00至-02:00的间隙]
过渡[在1964-03-01T00:00-02:00至-03:00时重叠]
过渡[1965-01-31T00:00-03:00至-02:00的间隙]
过渡[在1965-03-31T00:00-02:00至-03:00时重叠]
过渡[1965-12-01T00:00-03:00至-02:00时的间隙]
过渡段【1966-03-01T00:00-02:00至-03:00重叠】
过渡[1966-11-01T00:00-03:00至-02:00的间隙]
过渡段【1967-03-01T00:00-02:00至-03:00重叠】
过渡[1967-11-01T00:00-03:00至-02:00的间隙]
过渡[在1968-03-01T00:00-02:00至-03:00时重叠]
过渡[1985-11-02T00:00-03:00至-02:00的间隙]
过渡段【1986-03-15T00:00-02:00至-03:00重叠】
过渡[1986-10-25T00:00-03:00至-02:00时的间隙]
过渡段[1987-02-14T00:00-02:00至-03:00重叠]
过渡[1987-10-25T00:00-03:00至-02:00时的间隙]
过渡[在1988-02-07T00:00-02:00至-03:00时重叠]
过渡[1988-10-16T00:00-03:00至-02:00时的间隙]
过渡[在1989-01-29T00:00-02:00至-03:00时重叠]
过渡[间隙]
Instant instant = Instant.now() ;
ZoneOffsetTransition t = rules.nextTransition( instant );
Duration d = Duration.between( instant , t.getInstant() ) ;