java - Java LocalDateTime 在不同的服务器上给出不同的输出。相同时区配置
问题描述
我有一个简单的程序,它只输出时间,但我在不同的 Linux 发行版上得到不同的结果。我验证了默认时区已设置属性,并且在 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-reconfigure tzdata
推荐阅读
- sql - Select语句中的计数查询
- python - 找到两点之间的最短路径
- powerbi - 计算列从 PowerBI 中另一个表中的值获取平均值
- python - Numpy:如何迭代地将 3D 数组堆叠成行?
- neo4j - 在 Cypher 中创建三个表之间的关系
- sql - 使用 top x count 查询作为 where 子句来显示所有符合条件的记录
- c# - 我怎样才能等待最少的时间?
- list - 如何使 flexbox 与 listis 一起工作
- reporting-services - 从两个不同的数据集获取总数到第三个不同的 tablix ssrs
- c++ - 当转换为无符号时,标准说“最小的无符号整数”是结果。为什么“最小”在这里很重要?