巴西夏时制的规则已更改,但最新的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!
我已经发送了一封电子邮件到www.iana.org Iana(互联网号码分配机构),我在等待他们的回复。
有人知道吗?
谢谢
修改: 为了澄清这个问题:我想知道TimeZone数据库上的更新是如何工作的(何时以及由谁完成)。
Sinse the Iana回答了我的电子邮件,并向我解释说,巴西DST的更改是在Brazil has canceled DST - GitHub上进行的,它将在数据库的下一个版本中得到解答。
答案 0 :(得分:1)
此更改已在4月(thread here,commit here)的tz数据中进行。该版本将于2019b发布。
还没有确切宣布何时发生的公告,但是您可以订阅tz-announce邮件列表,以在收到通知时得到通知。
当然,您需要等待相应的Java更新,或使用ziupdater或tzupdater工具。