关于java(MyEclipse)时区不对,差8个小时处理(方法一)
2010-06-09 10:48
369 查看
最近有遇到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(Eclipse)时区不对,差8个小时处理
- 关于java(Eclipse)时区不对,差8个小时处理
- 关于Eclipse无法重新编译java文件的处理方法之一
- 关于MyEclipse的诡异现象及处理方法
- java关于日期的运算等处理方法
- 关于小程序&VUE上传文件的java处理方法
- java关于日期的运算等处理方法
- 关于Java中split方法对空字符串处理问题
- java中关于时区转换的方法
- 关于 Java源文件带有package的普通程序和Applet编译和运行时错误的处理方法
- 关于 Java源文件带有package的普通程序和Applet编译和运行时错误的处理方法
- [jsp]java关于日期的运算等处理方法
- java对世界各个时区(TimeZone)的通用转换处理方法
- 关于Java程序中类定义对象的处理,以及类中变量与方法的运行过程
- Java中关于日期的处理方法
- 关于Java中split方法对空字符串处理问题
- java对世界各个时区(TimeZone)的通用转换处理方法
- myeclipse中调试调用带有静态代码块的类时出现java.lang.NoClassDefFoundError的处理方法
- 关于Eclipse无法重新编译java文件的处理方法之一
- Spring 关于MyEclipse下创建Maven项目找不到application.xml文件的处理方法