Java 巴西夏令时新规定
New rules for Brazil's Daylight Saving Time on 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 数据库的更新是如何工作的(何时完成以及由谁完成)。
Iana 回复了我的电子邮件并向我解释说巴西 DST 的更改是在 Brazil has canceled DST - GitHub 上进行的,它将在数据库的下一个版本中进行,我的问题得到了回答。
此更改在 4 月份 (thread here, commit here) 的 tz 数据中上演。它将在 2019b 发布时出现。
目前还没有确切的公告,但您可以订阅 tz-announce 邮件列表,以便在它发生时得到通知。
当然你需要等待相应的Java更新,或者使用ziupdater或tzupdater工具。
巴西夏令时的规则已更改,但最新的 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 数据库的更新是如何工作的(何时完成以及由谁完成)。
Iana 回复了我的电子邮件并向我解释说巴西 DST 的更改是在 Brazil has canceled DST - GitHub 上进行的,它将在数据库的下一个版本中进行,我的问题得到了回答。
此更改在 4 月份 (thread here, commit here) 的 tz 数据中上演。它将在 2019b 发布时出现。
目前还没有确切的公告,但您可以订阅 tz-announce 邮件列表,以便在它发生时得到通知。
当然你需要等待相应的Java更新,或者使用ziupdater或tzupdater工具。