Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143306
  • 博文数量: 19
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 239
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 12:47
文章分类
文章存档

2014年(5)

2013年(4)

2012年(10)

分类: Java

2013-06-05 19:40:08

目前我遇到过的java时间会有问题有三种情况:Locale timezone jdk
jdk导致的错误:
     曾经我安装1.6的jdk,当时程序出错,开始没发现是时间错了,后来才知道,得到的new Date()和系统的时间差了8小时,可能有的人和我一样幸运,也遇到过这样的问题。
    解决方法:
        1、找到你用的jre文件夹,以本机为例:D:\ProgramFiles\Java\jdk1.x.x\jre\lib
        2、在上述文件夹下有个zi文件夹,我们的工作都在这里。
        3、zi文件夹下有一个Etc文件夹,我们要做的工作就是从这个文件夹下找到对应的GMT文件替换zi下GMT文件。
        4、选择哪个文件呢?如果java获取的时间+N=当前系统时间,就选择GMT-N文件,重命名为GMT,覆盖掉zi下的GMT文件,如果java获取的时间-N=当前系统时间,就选择GMT+N文件,重命名为GMT,覆盖掉zi下的GMT文件。
        5、再运行一下你的程序看时间是不是正确了,如果还是不正确,请确认你的jre目录是否选得正确。
总之,就是java时间快了N的话就选+N,慢了N的话就选-N,和正常的逻辑相反。(时区嘛,向前8 就会快8小时,向后8 就会慢8小时,就像日本比中国早1小时。我猜的:-))
注意:如果用eclipse,那么eclipse里的时间还是没有改要修改jre 的对应文件,然后重启eclipse
我的拷贝的

Java\jre6\lib\zi\Etc

Java\jre6\lib\zi

Java\jdk1.6.0_18\jre\lib\zi\Etc

Java\jdk1.6.0_18\jre\lib\zi 


TimeZone导致的错误:
     确切的说,刚才那个应该就是jdk那里改了就可以修改这个系统时区了,但可以通过代码在不改变jdk的情况下修改时间

点击(此处)折叠或打开

  1. System.out.println(new Date());
  2.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINESE);
  3.         TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取中国的时区
  4. //        TimeZone tz = TimeZone.getTimeZone("GMT+08:00");
  5. //        TimeZone.setDefault(tz);
  6.         sdf.setTimeZone(timeZoneChina);
  7.         String st = sdf.format(Calendar.getInstance().getTime());
  8.         System.out.println(st);
这是通过程序修改时区,也可以改变时间差问题,但不是根本解决办法啊!可能有的时候会需要它~
Locale导致的错误:
曾经和同事一起都是用linux下面开发,大家都知道linux有个最大的特点就是灵活,各种各样的东西都可以自定义,可以自由配置,每个人都可以有独特的一个操作系统。当我们调用同一个SmpleDateFormat的时候居然就产生了不一样的结果,当时还比较纳闷,java是jvm来执行是跨平台的啊,怎么现在跨个机器就不好使了呢,弄了一会发现,他打出来的时间是中文的,我的是英文的,查过api后发现有个locale的参数,比较后发现我的locale是en_US.utf8,而他的是zh_CN.gbk。看完这个估计大家也就知道怎么改了。要么修改系统的locale,dpkg-reconfigure locale(方法好多 set LANG export  直接修改文件等);要么传locale的参数。SimpleDateFormat(String pattern, Locale locale)



阅读(4128) | 评论(0) | 转发(1) |
0

上一篇:2013年6月5日

下一篇:Emacs快捷键

给主人留下些什么吧!~~