Java 8 获取时间 new Date() 的问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
引用来自“龅牙驴”的评论
发现
jdk_8u66 获取时区 ubuntu 12.04 时区,没有获取到,默认指定了 zone 值,所以时间晚了 2 小时;综合分析是 jdk 和 ubuntu 交互的问题,现在设置 tomcat 的 catalina.sh 设置 JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai" 后,一切都正常了。感谢楼上的帮助!
发现
jdk_8u66 获取时区 ubuntu 12.04 时区,没有获取到,默认指定了 zone 值,所以时间晚了 2 小时;综合分析是 jdk 和 ubuntu 交互的问题,现在设置 tomcat 的 catalina.sh 设置 JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai" 后,一切都正常了。感谢楼上的帮助!
Locale.setDefault(Locale.CHINESE) 一样的。服务的时区和时间应该是准确的,date 指令,出来的时间是正确的。
分别 输出 System ,Date 和 LocalDateTime 的时间,时间完全一致,都比服务器晚 2个小时整。
没遇到过,强制设置一下Locale.setDefault(Locale.CHINESE);呢
我记得 new Date() 的值来自 System.currentTimeMillis()
你在获取时间的时候,强制设置一下时区试一下呢
你试一下 System.currentTimeMillis() ,看看时间是多久