linux下为java设置正确的时区
来源:互联网 发布:java 项目中使用log4j 编辑:程序博客网 时间:2024/05/22 03:40
公司新装的测试环境,发现报表上显示的时间比正常时间差了8个小时,检查了一下系统时间,发现设置完全正确,这就很奇怪了;
后来想到因为系统中使用的时间类型是timestamp类型,所以会有时区的问题,当时区设置有问题的时候就会发生查看当前时间设置正确,但是时间怎么也对不上的情况;
于是到网上查询如何设置时区,走了一些弯路,在此总结一下:
- 方法一
在 tomcat的jvm 运行参数加上 -Duser.timezone=GMT+8 ;
设置好后,就会忽略系统设置的时区,这种方法虽然简单直接,但是却不是一种好的方式,要从根源上解决问题!
设置好后,就会忽略系统设置的时区,这种方法虽然简单直接,但是却不是一种好的方式,要从根源上解决问题!
- 方法二
映射时区文件/etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或
cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime
java获取时区读取的就是/etc/localtime这个文件(准确的说应该是hotspot jvm,openjdk不起作用,要用方法一);
删了/etc/localtime,java时区就变成了GMT,软链接到指定时区后,java时区就是localtime指定的时区;
以下方法个人亲测针对hotspot jvm不管用(也许针对openjdk 虚拟机起作用);有没有/etc/sysconfig/clock这个文件,不会对jvm有任何影响,但是应该会对计算机关闭启动的时间有影响;
在TOMCAT的JAVA运行参数添加 -Duser.timezone=Asia/Shanghai或者,如果有启动的定时器或首次执行的代码,可以使用语句 System.setProperty("user.timezone","Asia/Shanghai");来设置
但是为解决时区问题,这样编码实在太烦,所以你要知道如何从根本上解决问题:
LINUX下:jre是从/etc/sysconfig/clock这个文件中获取时区信息的,修改次文件即可,没有的话添加一个。
附clock文件内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
但是为解决时区问题,这样编码实在太烦,所以你要知道如何从根本上解决问题:
LINUX下:jre是从/etc/sysconfig/clock这个文件中获取时区信息的,修改次文件即可,没有的话添加一个。
附clock文件内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
1 0
- linux下为java设置正确的时区
- Linux下时区的设置
- Linux下jvm时区设置-JAVA时区问题
- Linux下时间/时区的设置
- Linux下时间/时区的设置
- Linux下时间/时区的设置
- Linux下时间/时区的设置
- linux下时区、时间的设置
- 如何调整Linux系统为正确时区
- Linux下jvm时区设置
- Linux下jvm时区设置
- Linux下时间/时区的设置,及MySQL配置时区设置
- 修改Linux时区的正确姿势
- 如何设置Linux时区为东八区
- 设置Linux系统的时区
- 设置修改Linux的时区
- 辛星解读PHP中设置正确的时区
- linux设置时间为24小时制,设置时区
- HDU 5715 XOR 游戏(二分+dp+01字典树)
- 哈夫曼树
- VB6 基于API的远程开机代码
- 【机器学习】bias and variance
- MyEclipse 新建->后面的菜单选项设置
- linux下为java设置正确的时区
- 编写最小生成树代码遇到的小问题
- 分类讨论
- LightOJ 1138(求末尾零个数)
- SDUTACM 数据结构实验之排序七:选课名单
- myeclipse集成maven
- leetcode 168 Excel Sheet Column Title C++
- Spring MVC 前后台传值情况汇总
- 杭电-1498 50 years, 50 colors(二分匹配)