浙江省职业建设学院官方网站,WordPress验证邮箱,企业网站制作的软件,安康市建设规划局网站通过Java得到的时间与操作系统时间不一致#xff0c;如何修改Java虚拟机时间#xff1f;
造成这种问题的原因可能是#xff1a;你的操作系统时区跟你JVM的时区不一致。
你的操作系统应该是中国的时区吧#xff0c;而JVM的时区不一定是中国时区#xff0c;你在应用服务器…通过Java得到的时间与操作系统时间不一致如何修改Java虚拟机时间
造成这种问题的原因可能是你的操作系统时区跟你JVM的时区不一致。
你的操作系统应该是中国的时区吧而JVM的时区不一定是中国时区你在应用服务器的Java虚拟机添加如下配置 -Dfile.encodingUTF8 -Duser.timezoneGMT08
在一个精简的Linux安装上jre发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。java程序获取的时间都是GMT时间而系统是北京时间应该是GMT8刚好相差8小时。网上搜了好多资料只有两种方法
1、在程序中使用java的函数设定时区。
2、在启动java程序时加参数-Duser.timezoneGMT8
不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数太麻烦了。就没有一劳永逸的办法了
开始以为jre应该会有某个配置文件保存了时区的配置结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是 linux中的系统配置文件于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的 linux系统中的这个文件拷过来一试ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。
附clock文件内容
ZONE“Asia/Shanghai” UTCfalse ARCfalse
ZONE – 时区 UTC – 表明时钟设置为UTC。 ARC – 仅用于alpha表明使用ARC。
总结JVM的时区默认的是操作系统的时区但是我们可以通过两种方式给JVM手动设置时区通过代码和java启动参数。在android中JVM的时区我们只能用代码来设置因为默认的我们改不了;因为java的启动参数是通过jre设置的而我们是看不到的所以只能通过代码设 置
TimeZone.setDefault(TimeZone.getTimeZone(Asia/Shanghai));。