Java中莫名其妙的时区错误
来源:互联网 发布:windows完成端口 编辑:程序博客网 时间:2024/05/21 12:40
前一阵子更新了系统,鸟枪换炮地装上了win7,可是项目却出现了莫名其妙的问题。我这个项目的客户端启动之后会从服务端获取系统时间,然后更新本地时间。但我发现每次启动客户端后,本地时间都会被改为8小时之前。起初我以为是服务器上系统时间错了,也就没管,一直以8小时前的本地时间进行调试。但是当这影响了我的作息时间,导致下班延后给人一种主动加班的表象时,我无法容忍了,决定到服务器上一看究竟。
这一看让我大跌眼镜(好吧,尽管我不带眼镜)——服务器时间是正确的。那问题究竟在哪里呢?于是设置断点,开始调试。当断点运行到
check.setsystemtime(new date());
时,查看check对象的systemtime字段的值,居然是传说中的格林威治时间——8小时前。。。
也就是说new date()出来的不是系统时间,是不是时区出问题了呢?一测试,果然。看下面的代码:
date date = new date();
system.out.println(date.tostring());
calendar calendar = calendar.getinstance();
system.out.println(calendar.gettime());
system.out.println(system.getproperty("user.timezone"));
system.out.println(system.getproperty("user.country"));
结果如下:
wed may 11 02:08:55 cst 2010
wed may 11 02:08:56 cst 2010
gmt
cn
也就是说,系统的时区出现了问题。但是系统时区是完全正确的:
问题究竟出在哪里呢?
会是环境不兼容吗?
我的jdk是1.5版本,会不会是jdk太旧与win7不兼容,于是在获取当前时区时出现异常而默认取到了gmt呢?于是同样的环境在其他机器上测试,居然完全没问题。而且在网上搜索发现,在java bug的数据库中也早已有人报告了这个错误(但是一直没有解决),其中有人是xp,有人是2003。看来不是环境的问题了。
会是注册表的问题吗?
我们知道在注册表hlm\software\microsoft\window nt\currentversion\time zones下有关于各个时区的配置,会不会是由于安装了某个程序把这些配置破坏了呢?于是我从没有问题的机器上导出了一份该节点的注册表,导入到我的机器,奇迹出现了。。。
吗?
答案是没有,问题依旧。
会是人品问题吗?
还真有这个可能。同样的环境别人的机器没问题,而我的不行,不是rpwt是什么?但我是不相信宿命的。笼统上说环境大致相同,但肯定会有微小的差别,这种微小的差别是无法测评的。
实在没有办法,不得不求助于csdn,有几位大牛耐心地帮我分析了问题,并提出了一些解决方案。
瞒天过海法
既然在目前的项目中只有我一台机器有这个问题,也许在这台机器上做点手脚就可以漫天过海了。
在eclipse中打开run对话框的arguments选项卡,在vm arguments框的后面加入如下的参数:
-duser.timezone=asia/shanghai
这样在调试或运行程序时,就会先更改时区。由于是本地的配置,不会对其他机器造成影响。
最终“解决方案”
也许重装系统可以解决,但是我懒,不愿重装。那么没有办法,只有升级jdk了。把1.5卸载,安装1.6,修改一下环境变量,再运行之前的程序,ok,整个世界终于清静了。
但是,问题的症结何在?
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- Java中莫名其妙的时区错误
- Java中莫名其妙的时区错误
- Java中 new date 莫名其妙的时区错误 win7环境下
- 对eclipse中出现莫名其妙的错误
- ASP 莫名其妙的错误
- 莫名其妙的错误窗口
- 一些莫名其妙的错误
- 【Android】莫名其妙的错误
- spark莫名其妙的错误
- 莫名其妙的错误
- java中时区的设定
- 莫名其妙的java struts2
- 一个莫名其妙的配置错误
- 一段莫名其妙错误的代码
- 莫名其妙的http 405错误
- 程序莫名其妙的错误,怎么办?
- 由莫名其妙的错误开始
- 遇到一个莫名其妙的错误。
- 总结两个Javascript的哈稀对象的一些编程技巧
- 使用 Maven管理Eclipse Java项目(转)
- Java漏洞成黑客目标 微软呼吁用户更新软件
- [转]java中的io笔记
- java作用域的区别
- Java中莫名其妙的时区错误
- Java学习从入门到精通--我是菜鸟,不要笑我
- JAVA 继承基本类、抽象类、接口
- [转载]Java一些基础问题
- javascript代码分离
- java面试题总结
- 使用 Java 实现 Comet 风格的 Web 应用
- 如何迅速成为Java高手
- Java语言中的修饰符列表