为Java时区生成自定义tzdb.dat

时间:2015-08-14 14:30:24

标签: java timezone

使用Java 1.6,我从.zic文件生成了一个jre / lib / zi / America / Sao_Paulo时区文件,该文件的内容如下:

Rule Brazil 2012 only - Feb 26 06:00 0 S
Rule Brazil 2012 only - Oct 21 00:00 1 D
Rule Brazil 2013 only - Feb 17 06:00 0 S
Rule Brazil 2013 only - Oct 20 00:00 1 D
Rule Brazil 2014 only - Feb 16 06:00 0 S
Rule Brazil 2014 only - Oct 19 00:00 1 D
Rule Brazil 2015 only - Feb 22 06:00 0 S
Rule Brazil 2015 only - Oct 18 00:00 1 D
Rule Brazil 2016 only - Feb 21 06:00 0 S
Rule Brazil 2016 only - Oct 16 00:00 1 D
Rule Brazil 2017 only - Feb 19 06:00 0 S
Rule Brazil 2017 only - Oct 15 00:00 1 D
Zone Brazil/East -3:00 Brazil BR%sT

现在,使用Java 8,jre / lib / zi文件夹不再存在。它被jre / lib / tzdb.dat文件替换。

如何使用自定义时区生成此tzdb.dat文件?

2 个答案:

答案 0 :(得分:0)

您可以试试这个backport-class:

TzdbZoneRulesCompiler

但请注意:不公开(您可以通过复制粘贴或类似方式绕过它)因此并非真正用于公共用途。此外,它不是oracle使用的原始tz编译器,但可能创建相同的输出(假设此细节在java.time的backport中保持相同)。

我同意Matt Johnson的意见,尽可能避免使用自定义时区,而是调整应用程序代码。您还可以考虑通过定义专门的zone rules(通过官方Java-8-API)来创建自定义时区。

答案 1 :(得分:0)

我找到了解决方案。

瞧!