win7 32位下 java取系统时间

        近来遇到一个很神奇的问题,同样的代码在别人机器跑的很好,在我的电脑上就不行。于是四处查找原因。


最后终于查出原因了,顺便与大家分享下。                                              

 

 原因:我的电脑是64位win7 ,今年新出的本本。三个版本的jdk下测试结果如下:

 

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class test {
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		System.out.println(c.getTimeZone());
		
		Date date = new Date(); 
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		String tmpDate = df.format(date);
		System.out.println(tmpDate);
		
		//JDK1.5.0.06
		sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
   2011-06-26 11:41:52  	时间错误了  应该是2011-06-26 19:41:52  差 了8个小时  		
		//JDK1.5.0.22 X64
		sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
		2011-06-26 19:39:24
		
		//JDK1.5.0.22 X86
		sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
		2011-06-26 19:40:14
		
	}
             

  另外,如果是 jdk 1.5 的话,那用 java -version 看一下 java 的版本号,根据 Sun 提供的资料,对应于 Windows 系统,JDK 1.5 最小的版本号:


Windows 7, Windows 2008 R2, Windows Vista SP2, Windows 2008 SP2 需要 jdk1.5.0_21 及以后版本
Windows 2008 需要 1.5.0_19 及以后版本
Windows Vista 需要 1.5.0_14 及以后版本

JDK 1.6 系统支持最小的版本号

Windows 7 需要 1.6.0_14 及以后版本
Windows Server 2008 R2 需要 1.6.0_16 及以后版本      


解决方案:


1.       暂时解决的办法是:在jvm参数设置  -Duser.timezone=Asia/Shanghai

2.      更换jdk版本为大于jdk1.5.0_21

3.     修改注册表  参考http://blog.csdn.net/Nonetracer/archive/2010/07/07/5718796.aspx




 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值