linux new date时间不对,java new Date()获得的系统时间与操作系统的时间不一致

java new Date()获得的系统时间与操作系统的时间不一致(差8小时)

问题:

1.new Date() 得到的时间和系统相差 相差8个小时

2.eclipse 控制台打印的时间与系统相差 相差8个小时

3.log4j日志的时间与与系统相差 相差8个小时

上述问题其实是同一个问题。

造成这种问题的原因可能是:操作系统时区和JVM的时区不一致。(new Date()获取的是JVM的时区,看到的是操作系统时区。)

有时候JVM的new java.util.Date()得到的是格林威治时间(也就是0时区),我们的北京时间比它晚8个小时,因为北京在东八区。

例如:在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。

java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时。

解决:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

//df.setTimeZone(TimeZone.getTimeZone("GMT+8"));

df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));

System.out.println(df.format(new Date()));// new Date()为获取当前系统时间

添加一行df.setTimeZone(TimeZone.getTimeZone("GMT+8"));或df.setTimeZone(TimeZone.getTimeZon

你可能感兴趣的:(linux,new,date时间不对)