Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 LocalDateTime在不同的服务器上提供不同的输出。相同时区配置_Java_Linux_Datetime - Fatal编程技术网

Java LocalDateTime在不同的服务器上提供不同的输出。相同时区配置

Java LocalDateTime在不同的服务器上提供不同的输出。相同时区配置,java,linux,datetime,Java,Linux,Datetime,我有一个简单的程序,只输出时间,但我在不同的Linux发行版上得到不同的结果。我验证了默认时区是set属性,在SuSe上我得到默认时区,但在Ubuntu上我得到UTC时间。我不明白为什么 这是密码 import java.time.LocalDateTime; public class Main { public static void main(String[] args) { LocalDateTime nowTime = LocalDateTime.now();

我有一个简单的程序,只输出时间,但我在不同的Linux发行版上得到不同的结果。我验证了默认时区是set属性,在SuSe上我得到默认时区,但在Ubuntu上我得到UTC时间。我不明白为什么

这是密码

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        LocalDateTime nowTime = LocalDateTime.now();
        System.out.print(nowTime);
    }
}
在我的Suse(&Windows)服务器上,这是我的输出

/home/user/test # timedatectl
      Local time: Sat 2020-04-11 12:18:49 PDT
  Universal time: Sat 2020-04-11 19:18:49 UTC
        RTC time: Sat 2020-04-11 19:18:49
       Time zone: America/Los_Angeles (PDT, -0700)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no
/home/user/test # java Main
2020-04-11T12:18:51.461
然后在我的Ubuntu发行版上

/home/user/test# timedatectl
                      Local time: Sat 2020-04-11 12:19:53 PDT
                  Universal time: Sat 2020-04-11 19:19:53 UTC
                        RTC time: Sat 2020-04-11 19:19:53
                       Time zone: America/Los_Angeles (PDT, -0700)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no
/home/user/test# java Main
2020-04-11T19:19:57.232828
无论我在什么操作系统上部署此代码,我都必须做些什么来确保输出是一致的

编辑: 在添加另一行代码来检查java使用的时区时,这就是我得到的

System.out.println(java.util.TimeZone.getDefault().getDisplayName())

Suse=>太平洋标准时间

Ubuntu=>协调世界时


所以现在我需要弄清楚为什么它使用不同的时区,Ubuntu服务器上的时区设置一定有问题。我重新运行了时区配置工具,现在一切正常


dpkg重新配置tzdata

Ubuntu服务器上的时区设置一定有问题。我重新运行了时区配置工具,现在一切正常


dpkg reconfigure tzdata

猜测一下,Java在Ubuntu机器中检测到错误的时区,或者它被系统/用户属性覆盖。您可以使用
System.out.println(Java.util.timezone.getDefault().getDisplayName())检查Java默认使用的时区@Powerlord是你的权利。Ubuntu的输出是协调世界时,Suse是太平洋标准时间。有什么想法可以让我看看这个覆盖发生在哪里吗?猜测一下,Java在Ubuntu机器中检测到了错误的时区,或者它被系统/用户属性覆盖了。您可以使用
System.out.println(Java.util.timezone.getDefault().getDisplayName())检查Java默认使用的时区@Powerlord是你的权利。Ubuntu的输出是协调世界时,Suse是太平洋标准时间。有什么想法可以让我看看这个覆盖发生在哪里吗?在这种情况下,我看不出你的问题对其他读者有什么帮助。请允许我建议您删除它。@OleV.V。所以你不认为让其他有同样问题的人知道这可能是服务器问题而不是应用程序/代码问题会有帮助吗?如果我看到有人有同样的问题,并认为这是一个可能的解决方案,那么这将节省我几个小时的头痛。谢谢你返回删除的问题。众说纷纭。我完全同意。请做你认为最好的。在我投票后,你的问题已经结束,不知道这是否意味着它将在某个时候被版主删除。我没有做更多的事情。在这种情况下,我看不出你的问题对其他读者有什么帮助。请允许我建议您删除它。@OleV.V。所以你不认为让其他有同样问题的人知道这可能是服务器问题而不是应用程序/代码问题会有帮助吗?如果我看到有人有同样的问题,并认为这是一个可能的解决方案,那么这将节省我几个小时的头痛。谢谢你返回删除的问题。众说纷纭。我完全同意。请做你认为最好的。在我投票后,你的问题已经结束,不知道这是否意味着它将在某个时候被版主删除。我不再为此做任何事了。