Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,在不同的系统上为TimeZone.getDefault().getID()获取不同的值_Java_Time_Timezone - Fatal编程技术网

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

在java中,在不同的系统上为TimeZone.getDefault().getID()获取不同的值,java,time,timezone,Java,Time,Timezone,我在不同的系统上为TimeZone.getDefault().getID()获取不同的值。 例如,在印度标准时间的情况下, 在其中一个系统上,我们得到“GMT+5:30”: 而在另一个节目中,我们看到的是“亚洲/加尔各答”。 我们希望在所有机器上都有“亚洲/加尔各答”字符串 为什么这种行为有不一致之处 有没有办法在不同的windows/MAC系统中获得一致的行为 使用Java以编程方式获取客户端时区的最佳方法是什么?听起来这两台机器的配置不同——就这么简单。例如,如果您的第一个系统是Window

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

为什么这种行为有不一致之处

有没有办法在不同的windows/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
,后者是一个符号链接而不是一个文件

谢谢你,乔恩,这是同一个问题。(选中/取消选中“自动调整夏令时”)。但是,我怎么能指望使用我的应用程序的人总是选中/取消选中复选框。@DeepakChaudhry:如果他们取消选中复选框,也许他们不想遵守夏令时。在某种程度上,您可能需要信任用户的选择。就任何事情而言,这都是用户的时区。当然,现在您可以在文档中随时提供疑难解答信息。