巴西夏令时的规则已更改,但最新的 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并将在数据库的下一个版本中,我的问题得到了回答。