Linux下jvm时区设置-JAVA时区问题

Linux下jvm时区设置-JAVA时区问题 2008-10-14 15:05 今天遇到一个问题,就是本机数据传到另外一台机器后时间加了8个小时,查资料了解了一下。  
当使用JAVA网络编程的时候,需要注意:时区。user.timezone  
可以使用下面的代码遍历当前的系统属性。  
//------------------------------------------------------------------------------ 
final Properties p = System.getProperties();         

final Enumeration e = p.keys();         

while (e.hasMoreElements())    { 
            final String prt = (String) e.nextElement();             

           final String prtvalue = System.getProperty(prt);             

           System.out.println(prt + ":" + prtvalue);  

 } 


//--------------------------------------------------------------------------------  
输出中有一项:user.timezone,是JVM当前系统的时区。你要检查运行机器上的时区是否一致,所以代码最好是使用时间的时候统一设置。  
//-------------------------------------------------------------------------- 
final TimeZone zone = TimeZone.getTimeZone("GMT+8"); 
//-------------------------------------------------------------------------  
设置默认时区。当然你可以这样检查一下: //--- 
System.out.println(TimeZone.getDefault()); //输出当前默认时区 
final TimeZone zone = TimeZone.getTimeZone("GMT+8"); //获取中国时区 

TimeZone.setDefault(zone); //设置时区 
System.out.println(TimeZone.getDefault()); //输出验证 //---  
除了上面的解决方法外,还可以: 
在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  
ZONE -- 时区 
UTC -- 表明时钟设置为UTC。 
ARC -- 仅用于alpha表明使用ARC。   
但是windows下,据说是修改:Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\Config 很遗憾我没有搞定,参考:http://support.microsoft.com/kb/888253/zh-cn  
补充:搞定windows下的方法: 
检查注册表:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 是不是有问题,我的问题是很多缺失,JAVA底层读取注册表的时候,还没有读到中国标准时间,就终止了,取的是默认的GMT标准时间,和我机器上的时间差8个小时。 
你可以找一份完好的注册表信息导进去,也可以删除损坏的在中国时区前面的那些不用的其他时区,保证中国时区正确就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值