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

来源:百度知道 编辑:UC知道 时间:2024/05/27 14:03:48
我用 这个 函数得到的时间是:
Sat Oct 20 12:05:56 GMT 2007

而,我系统的时间 却是 :

2007年10月20日 20:05

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

你的这个问题系 系统 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());
*/

这样看你的Ecplise里面关于时区的设置了

new Date()的到的是JVM的时间,一般来说应该是系统时间.如果有错误,则是JVM的BUG(这个是存在的情况).
所以你可以用Locale.SIMPLIFIED_CHINESE来指定你当前的时区(这里的是中国时区).
用new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE)来设置你显示的效果和时区最好.

GMT就是格林威治时间的意思,你用的是Date类的默认构造方法,没有加参数,默认的构造方法就是构造一个GMT时区的时间。

不是呀,我用new Date得到的时间就是系统时间呀,没错呀~~~

我是这样用的

import java.util.*;
System.out.println(new Date());

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