我在不同系统上获得TimeZone.getDefault()。getID()的不同值。 例如,在印度标准时间的情况下, 在其中一个系统中我们得到“GMT + 5:30”: 而在另一个我们得到“亚洲/加尔各答”。 我们期望在所有机器上获得“亚洲/加尔各答”字符串。
为什么这种行为会出现不一致的情况?
有没有办法在不同的系统窗口/ MAC上获得一致的行为?
使用Java以编程方式获取客户端时区的最佳方法是什么?
答案 0 :(得分:2)
听起来两台机器配置不同 - 就这么简单。例如,如果您的第一个系统是Windows,则可能取消选中“自动调整夏令时”框。
如果您知道所有系统都需要亚洲/加尔各答,请明确使用。尽管如此,我尽量避免使用默认时区。即使我使用它,我也会尝试使用它显式,以便从代码中明显看出我尝试使用系统时区,而不仅仅是是偶然的。
答案 1 :(得分:0)
如果有人在Linux上遇到同样的问题而无法找到答案:
UTC
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
这是一个符号链接而不是文件!