Java 8 获取时间 new Date() 的问题

发布于 2021-11-30 18:28:42 字数 573 浏览 835 评论 9

Ubuntu 服务器的时区和时间都校验准确了,时区是 Asia/Shanghai; 但是 Java 程序 获取到的时间 还是晚了 2个小时。我JDK 的安装方式是,直接在 官网下载 最新的版本  jdk-8u66-linux-x64.tar.gz ,把它解压在 /usr/java/jdk_8u66 路径下,最后 /etc/profile 配置一下,JDK 使用正常,唯有  new Date()  获取时间有误(晚2小时)。

而且,如果我通过 MySQL 的now() 获取时间,是和服务器时间对应的。这几天一直百思不得其解,各位大神,有木有遇到过这种情况?请帮帮忙,谢谢了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

月牙弯弯 2021-12-02 11:32:16

引用来自“龅牙驴”的评论

发现 
jdk_8u66 获取时区 ubuntu 12.04 时区,没有获取到,默认指定了 zone 值,所以时间晚了 2 小时;综合分析是 jdk 和 ubuntu 交互的问题,现在设置 tomcat 的  catalina.sh 设置 JAVA_OPTS="$JAVA_OPTS  -Duser.timezone=Asia/Shanghai" 后,一切都正常了。感谢楼上的帮助!

情绪失控 2021-12-02 11:31:27

发现 
jdk_8u66 获取时区 ubuntu 12.04 时区,没有获取到,默认指定了 zone 值,所以时间晚了 2 小时;综合分析是 jdk 和 ubuntu 交互的问题,现在设置 tomcat 的  catalina.sh 设置 JAVA_OPTS="$JAVA_OPTS  -Duser.timezone=Asia/Shanghai" 后,一切都正常了。感谢楼上的帮助!

无人问我粥可暖 2021-12-02 11:14:37

Locale.setDefault(Locale.CHINESE) 一样的。服务的时区和时间应该是准确的,date 指令,出来的时间是正确的。 

葬花如无物 2021-12-02 10:59:46

分别 输出 System ,Date 和 LocalDateTime 的时间,时间完全一致,都比服务器晚 2个小时整。

高跟鞋的旋律 2021-12-02 10:57:54
LocalTime lt=LocalTime.now();

 System.out.println(lt);

眉黛浅 2021-12-02 10:04:38

没遇到过,强制设置一下Locale.setDefault(Locale.CHINESE);呢

挽清梦 2021-12-02 09:52:45

我记得 new Date() 的值来自 System.currentTimeMillis()

小情绪 2021-12-02 06:27:17

你在获取时间的时候,强制设置一下时区试一下呢

酒几许 2021-12-01 20:51:26

你试一下 System.currentTimeMillis() ,看看时间是多久

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文