博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java new Date()得到的时间和系统时间不一样
阅读量:5961 次
发布时间:2019-06-19

本文共 1104 字,大约阅读时间需要 3 分钟。

造成这种问题的原因是:操作系统时区跟JVM的时区不一致。
[root@paas244 ~]# 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。

转载地址:http://ezjax.baihongyu.com/

你可能感兴趣的文章
MyEclipse开发教程:使用REST Web Services管理JPA实体(四)
查看>>
如何提高教师的教学成果、学生的学习效果?
查看>>
《从Servlet、Dubbo、Mybatis聊聊责任链究竟怎么用 》
查看>>
新股前瞻|深耕IT界17年,伊登软件仅是个“中间商”
查看>>
dba_tables 和 dba_segments 表中块的区别
查看>>
Forefront TMG日志记录功能
查看>>
PIE SDK栅格数据的创建
查看>>
JVM | Java程序如何执行
查看>>
date 设置时间
查看>>
vs2017 + Python3.6 +Django1.11 连接mysql数据库
查看>>
速达3000 数据库备份文件分析
查看>>
MyBatis 通过包含的jdbcType类型
查看>>
链路与介质
查看>>
让puppet agent同步变得更加随机和离散
查看>>
SharePoint 2013 部署 Part 2
查看>>
SCN转换
查看>>
软件开发模式对比(瀑布、迭代、螺旋、敏捷)
查看>>
unity3d uGUI中世界坐标与屏幕坐标实际运用
查看>>
基于keepalived主从模型实现Nginx的高可用
查看>>
一个完整的微服务系统,应该包含哪些功能?
查看>>