在java中,在不同的系统上为TimeZone.getDefault().getID()获取不同的值



我在不同的系统上获得不同的TimeZone.getDefault((.getID((值。例如在印度标准时间的情况下,在其中一个系统上,我们得到"GMT+5:30":而在另一个节目中,我们将看到"亚洲/加尔各答"。我们希望在所有机器上都能得到"亚洲/加尔各答"字符串。

为什么这种行为前后矛盾?

有什么方法可以在不同的系统窗口/MAC之间获得一致的行为吗?

使用Java以编程方式获取客户端时区的最佳方式是什么?

听起来这两台机器的配置不同——就这么简单。例如,如果您的第一个系统是Windows,则可能已取消勾选"自动调整夏令时"框。

如果你知道所有系统都需要亚洲/加尔各答,那么就明确使用它。老实说,我尽量避免使用默认时区。即使我使用它,我也会尝试显式地使用它,这样从代码中可以明显看出,我正在尝试来使用系统时区,而不仅仅是偶然的。

如果有人在Linux上遇到同样的问题,却找不到答案:

  • 两台linux机器设置为UTC
  • 一个JVM报告不正确的时区(不包括CET(
  • 另一方报告正确UTC

问题可能是:

  • 故障机器具有以下符号链接:/etc/localtime -> /usr/share/zoneinfo/Europe/Paris
  • /usr/share/zoneinfo/Europe/Paris包含UTC信息

原因可能是简单的cp /usr/share/zoneinfo/UTC /etc/localtime替换了/usr/share/zoneinfo/Europe/Paris的内容,而不是覆盖/etc/localtime,后者是符号链接而不是文件!

相关内容

  • 没有找到相关文章

最新更新