java new Date()得到的时间和系统时间不一样

Posted 人艰不拆_zmc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java new Date()得到的时间和系统时间不一样相关的知识,希望对你有一定的参考价值。

造成这种问题的原因是:操作系统时区跟JVM的时区不一致。
[[email protected] ~]# timedatectl
可以看到服务的时区是中国时区。

 

java程序获取的时间都是GMT时间(格林尼治时间(0时区的时间)),而系统是上海时间,应该是GMT+8,刚好相差8小时。网上搜了好多资料,只有两种方法:

1、在程序中使用java的函数设定时区。

2、在启动java程序时加参数-Duser.timezone=GMT+8

不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数,太麻烦了。就没有一劳永逸的办法了?

开始以为jre应该会有某个配置文件保存了时区的配置,结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是 linux中的系统配置文件?于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的 linux系统中的这个文件拷过来一试,ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。

附clock文件内容:

ZONE=”Asia/Shanghai”
UTC=false
ARC=false

ZONE — 时区
UTC  — 表明时钟设置为UTC。
ARC  — 仅用于alpha表明使用ARC。

以上内容是网上搜集到的文章,我的解决方案是在程序中使用java的函数设定时区。

我需要的时间格式是:HH:mm。






以上是关于java new Date()得到的时间和系统时间不一样的主要内容,如果未能解决你的问题,请参考以下文章

java new Date取得是以啥时间为准

java new date时间 是系统时间吗

时区java项目new date()时间和服务器时间(数据库)不一致

java中new date与系统时间差8小时

Java 时间不一致

liunx tomcat(java new Date)服务时间比系统时间慢8个小时,刚起完服务时间是正常的,隔一天就变了