关于java(Eclipse)时区不对,差8个小时处理
来源:互联网 发布:淘宝同城件送货上门 编辑:程序博客网 时间:2024/06/06 05:53
最近有遇到java的时间不对的事件,现象:
通过java语句获得系统时间,用
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
取得的时间总是比系统时间少8个小时,获得的总是格林尼治时间(0时区的时间),检查系统时间确实是正确的,时区为GMT+8:00北京……等;但是此前并没有发生这类问题,以前时间是正确的,但是重装系统后出现了java的时间问题,可能是系统时间注册表出现问题,这里就不修改注册表了。这时MyEclipse或Java默认的时间时区是0时区,所以:
考虑到代码的可移植性,在用到时间的地方都初始化当前的时区;加上代码:
setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
修改如下:
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
通过java语句获得系统时间,用
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
取得的时间总是比系统时间少8个小时,获得的总是格林尼治时间(0时区的时间),检查系统时间确实是正确的,时区为GMT+8:00北京……等;但是此前并没有发生这类问题,以前时间是正确的,但是重装系统后出现了java的时间问题,可能是系统时间注册表出现问题,这里就不修改注册表了。这时MyEclipse或Java默认的时间时区是0时区,所以:
考虑到代码的可移植性,在用到时间的地方都初始化当前的时区;加上代码:
setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
修改如下:
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println(sdf.format(d));
或者:
Calendar now = Calendar.getInstance();
now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
这样就可以了。
针对这一问题在系统代码用到时间时可以在时间初始化前加上以下一句话,但是这样比较麻烦,因此,在安装Java的JDK之后,可以替换几个源文件以达到相同的目的。
setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
另一种方法:
找到Java目录下的
依次: jdk1.60\jre\lib\zi\Etc
jdk1.60\jre\lib\zi
java\jre1.6.0_14\jre\lib\zi\Etc
java\jre1.6.0_14\jre\lib\zi
下找到GMT文件,删除之(可以备份一下,以防万一),然后复制一份GMT-8并重命名为GMT替换原来的GMT。这样,就达到了掩人耳目的目的。试一下,可以解决!
---------------------------------------------
这个问题主要有JRE的时区所引起的,在eclipse安装目录下找到eclipse.ini的启动文件,打开输入启动参数
-vmargs
-Duser.timezone=Asia/Shanghai
---------------------------------------------
或者这样:eclipse 中 install JRE的 Default VM arguments 设置为:
-Duser.timezone=Asia/Shanghai
- 关于java(Eclipse)时区不对,差8个小时处理
- 关于java(Eclipse)时区不对,差8个小时处理
- 关于java(MyEclipse)时区不对,差8个小时处理(方法一)
- php时区设置老差8个小时解决办法
- php时区设置老差8个小时解决办法
- php时区设置老差8个小时解决办法
- Resin 时区设置差8小时解决
- Java 改变服务器时区为特定时区(解决获取系统时间和服务器相差8个小时)
- solr5解决时区差8小时的问题
- docker 中文乱码以及时区差8小时的解决办法
- java 解决时间差8个小时的问题、Linux系统中时区的修改及tomcat时区的修改
- 双系统,Ubuntu时间不对,相差8个小时
- JS date 和 datetime差一天(差8个小时)
- ubuntu的JDK时区与北京时间相差8个小时(Tomcat、Spring)
- wordpress 时区设置问题,相差8个小时
- java与MySQL之间总差8个小时的问题
- 【转载】 java与MySQL之间总差8个小时的问题
- mysql服务器和客户端时区不同,使用jdbc得到的结果差8小时的问题
- 给菜鸟的 Ubuntu 12.04安装VMware Workstation 8问题
- ArcGIS10.1桌面怎么使用ArcSDE服务连接
- Mysql SQL语句过长引起的问题
- 培养个人气质
- 强连通分量、Tarjan与蝴蝶结构
- 关于java(Eclipse)时区不对,差8个小时处理
- 线性回归,偏差、方差权衡
- Java程序员从笨鸟到菜鸟之(八十)细谈Spring(九)spring+hibernate声明式事务管理详解
- MyEclipse 字体大小、颜色设置
- 破解入门(七)-----牛刀小试之暴力破解
- Mysql学习1———创建、查看、删除数据库
- 很有用的UIImage扩展方法(category)支持放大和旋转
- C++中的多重继承及JAVAC#中的单继承——钻石之死
- git patch 使用