new java.util.Date() 得到的时间与系统时间不一样,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new java.util.Date() 得到的时间与系统时间不一样,为啥?相关的知识,希望对你有一定的参考价值。

我用 这个 函数得到的时间是:
Sat Oct 20 12:05:56 GMT 2007

而,我系统的时间 却是 :

2007年10月20日 20:05

相差了8小时,为什么啊?? 我系统时区设置什么都是正确的阿!!! ??

GMT就是格林威治时间的意思,你用的是Date类的默认构造方法,没有加参数,默认的构造方法就是构造一个GMT时区的时间。 参考技术A new java.util.Date()得到的是格林威治时间,我们的北京时间比它晚8个小时,因为北京在东八区 参考技术B new Date()的到的是JVM的时间,一般来说应该是系统时间.如果有错误,则是JVM的BUG(这个是存在的情况).
所以你可以用Locale.SIMPLIFIED_CHINESE来指定你当前的时区(这里的是中国时区).
用new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE)来设置你显示的效果和时区最好.
参考技术C 同意楼上的,
并修正一下是
GMT 格林尼治标准时间
另外,一看这你就明白了
http://then9.com/java/then9000059.htm
参考技术D 你的这个问题系 系统 JVM的事,可以设置下时区,通过以下的语句:

import java.util.*;

TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);

//显示Java能识别的系统中所有正确的时区
/**
String[] ids = TimeZone.getAvailableIDs();
for(int i = 0; i < ids.length; i++)
System.out.println(ids[i].toString());
*/本回答被提问者采纳

以上是关于new java.util.Date() 得到的时间与系统时间不一样,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么把Long转换成日期格式

New Date API介绍

高效开发:java.util.Date和java.sql.Date两者区别

高效开发:java.util.Date和java.sql.Date两者区别

使用对象 java.util.Date 时出现错误的星期几 [重复]

java怎么向mysql的datetime