java - 巴西在 Java 上的夏令时新规则
问题描述
巴西夏令时的规则已更改,但最新的 java 版本中不存在此新规则。
在这个测试代码上,使用 RedHat 提供的最新版本 (java-1.8.0-openjdk-1.8.0.212-3) 的结果不是预期的:
try {
final SimpleDateFormat parser = new SimpleDateFormat( "dd/MM/yyyy" );
final Date date = parser.parse( "05/12/2019" ); // 5th of december
System.out.println( "Is in Daylight Saving Time in this time zone? "
+ TimeZone.getTimeZone( "America/Sao_Paulo" ).inDaylightTime( date ) );
} catch ( ParseException exception ) {
exception.printStackTrace();
}
输出是:
Is in Daylight Saving Time in this time zone? true // should be false!
我已经向 Iana(互联网号码分配机构)- www.iana.org 发送了一封电子邮件,我正在等待他们回复。
有人知道吗?
谢谢
编辑:澄清问题:我想知道 TimeZone 数据库上的更新是如何工作的(何时完成以及由谁完成)。
Sinse Iana 回复了我的电子邮件并向我解释说巴西对 DST 所做的更改已取消 DST - GitHub并将在数据库的下一个版本中,我的问题得到了回答。
解决方案
此更改已在 4 月的 tz 数据中上演(在此处讨论,在此处提交)。它将在 2019b 发布时出现。
目前还没有公布具体何时发生,但您可以订阅tz-announce邮件列表,以便在发生时得到通知。
当然,您需要等待相应的 Java 更新,或者使用 ziupdater 或 tzupdater 工具。
推荐阅读
- r - 是否有一种 trainControl 方法,例如 90% 和 10% 分割而不是 cv?
- vb.net - VB.net 计算缩略图坐标以保存原始图像的裁剪
- objective-c - 在 macOS 中检测 VPN 连接(沙盒)
- wix - 使用 msiexec 卸载程序后,它仍保留在控制面板中(添加/删除程序)
- excel - 您可以更改 VBA 中数据透视表的源代码吗?
- maven - -Dmaven.test.skip=null 有什么作用?
- sql - 将数据导入sql server上不同服务器上的同一张表
- emacs - 如何在 GNU 屏幕内的 emacs 内重新启用 Ctrl-S?
- julia - Julia 中是否有类似 C++ 的 typedef 的概念
- sql - 如何连接 SQL Developer 数据库和 Apex 5 应用程序