Java 应用程序将事件写入日志文件,包括时间戳(从 Date.toString() 返回),而时间戳又包括时区。在我使用的 Windows 机器上,我看到 Date.toString() 返回的字符串具有表示为三个字符的字符串(例如“CST”)的时区。但在某些客户机器上,日期被写入日志文件,时区表示为与 GMT 的偏移量(例如“GMT-06:00”)。
我们有一个工具可以解析日志文件的文本以获取各种信息,但不幸的是,它的原始实现采用三字符表示,并且不适用于具有 GMT 偏移表示的日志文件。我们已经修复了该工具,现在对此无动于衷,但我们希望能够建议运行旧版本并且由于其字符串具有 GMT 偏移时区而遇到此问题的客户,他们可以获得如果他们更改系统设置以便他们的日志文件使用三个字符串的时区字符串写入,则该工具开始工作。此外,我们希望在未来的测试计划中考虑这种可变性,以确保我们使用每种设置进行测试。但我无法确定到底是什么在 Windows 设置中告诉 Java 使用“CST”与使用“GMT-06:00”。
我看到了几个与时区相关的注册表设置,但没有任何我可以清楚地识别为控制该特定选择的设置。一些注册表设置引用 tzres.dll。选择是否融入其中? Windows 上是否有任何简单的方法可以让 Date.toString() 使用一个时区表示与使用另一个时区表示来制定其字符串?