linux系统下java程序获取的时间与系统时间不一致

在java程序中我获取了系统当前的时间,但是时间和系统时间不一致,上网查了说是/etc/sysconfig/clock里面时区配置不对,确实刚开始的时候配置是不对,但是我... 在java程序中我获取了系统当前的时间,但是时间和系统时间不一致,上网查了说是/etc/sysconfig/clock里面时区配置不对,确实刚开始的时候配置是不对,但是我修改了之后还是不对,求大神解答 展开
 我来答
脱咐苛源D0
推荐于2016-10-02 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5829
采纳率:79%
帮助的人:756万
展开全部
造成这种问题的原因是:你的操作系统时区跟你JVM的时区不一致。

你的操作系统应该是中国的时区,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08

在一个精简的Linux安装上jre,所有的java程序获取的时间都不是系统时间。java程序获取的时间都是GMT时间,而系统是北京时间,是GMT+8,刚好相差8小时。只有两种方法可以解决 :
1、在程序中使用java的函数设定时区。
2、在启动java程序时加参数-Duser.timezone=GMT+8

jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。
附clock文件内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
ZONE -- 时区
UTC -- 表明时钟设置为UTC。
ARC -- 仅用于alpha表明使用ARC。      
hansonelite
推荐于2017-09-18 · TA获得超过343个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:59.2万
展开全部
先确定问题来源:JAVA获得的时区和系统时区哪个有问题
若是JAVA获得的时区有问题,在代码前加上下面这句话就行了:TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai");TimeZone.setDefault(tz)
追问
是java获取的时区有问题,程序中太多地方用到了时间的处理,所以改代码太麻烦。另外,相同的程序在另一台linux机器上运行就没有问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式