当前位置: 首页 > Linux

JavaWeb项目和系统时间相差8小时的问题

时间:2023-04-06 05:39:03 Linux

前面写过。今天记录分享一个问题,一个部署在Linux上的web项目执行时间和本地系统时间相差8小时。环境:Redhat6.5考虑正常时差可能与时区差有关1查看linux系统时间和时区[root@localhost~]#date2019-03-31Sunday16:00:32CST[root@localhost~]#date-RSun,31Mar201916:00:44+0800[root@localhost~]#date+"%Z%z"CST+0800从这里可以确认系统时间和时区正常(北京时间,也就是东八区),时区详情可以看这里2查看jvm时间和时区2.1先在linux的某个目录下执行javac,看javac命令是否可用,如下显示即可显示(中间部分省略)[root@localhosttest]#javacusage:javac其中,可能的选项包括:-g生成所有调试信息-g:none不生成调试信息-g:{lines,vars,source}只生成一些调试信息...-X输出非标准选项文件中的选项和文件名2.2编写测试程序+新日期());System.out.println("当前默认时区:"+TimeZone.getDefault());}}2.3编译执行[root@localhosttest]#javactime.java[root@localhosttest]#lltotalusage8-rw-r--r--1rootroot780March3116:02time.class-rw-r--r--1rootroot239March3116:00time.java[root@localhosttest]#javatime当前时间:SunMar3108:02:34CTM2019当前默认时区:sun.util.calendar.ZoneInfo[id="GTM",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null]这里还有其他包。如果上面的命令不好用,可以使用下面的命令(中间的点表示当前目录)[root@localhosttest]#javac-d。time.java[root@localhosttest]#lltotalusage8-rw-r--r--1rootroot780March3116:03time.class-rw-r--r--1rootroot239March3111:00time.java[root@localhosttest]#java-cp.time当前时间:SunMar3108:02:40CST2019当前默认时区:sun.util.calendar.ZoneInfo[id="GTM",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null]这里可以看出jvm时间比系统时间早8小时,而且是格林威治时区,所以这里可以修改jvm时区。这里说一下,网上查了一下据说jvm的时区默认读取的是硬件时区,目录是/etc/sysconfig/clock(详情),看下面的[root@localhosttest]#cat/etc/sysconfig/clockZONE="Asia/Shanghai"网上对比了一下,没有下面两行UTC=falseARC=false这里有人说问题是没有设置UTC=false,查资料说UTC指定BIOS中保存的时间是否为GMT/UTC时间,true表示BIOS中保存的时间为UTC时间,false表示BIOS中保存的时间为本地时间加上部分机器时间还是不行,如果是在tomcat中运行项目,重启tomcat即可。如果还是不行,还有办法修改tomcat的配置文件。参考上一篇文章:Tomcat修改日期的时区基本解决了。以上部分内容曾出现在客户现场,故现以笔记记忆的方式记录下来。如果有任何偏差,请告诉我。文章参考:https://blog.csdn.net/liqingh...