于是上網去查,看誰碰過這種問題,一查還真有人碰到過這問題,但是解決的辦法無非就是每次在獲取時間之前,把默認的時區改為東八區,有如下幾種方法:
1,在系統屬性里面添加如下一條:
System.setProperty("user.timezone", "Asia/Shanghai");
2,把默認時區改成我們的時區:TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);
但是以上這些方法都只能用在我們自己的應用中,當我們獲取時間的時候,改一下時區,但是對于那些應用服務器呢,它們以后記錄日志什么的,時間肯定就錯了.于是我想有沒有第三種方法可以把電腦恢復到更新以前呢,這樣不用加任何代碼,JAVA獲取的時候都是正確了,就像更新以前一樣,可是我的電腦關閉了系統還原,然后找了一些卸載的工具,卸載所更新的更新包,可是時區的更新包卻怎么樣也卸不掉.TimeZone.setDefault(tz);
后來想是不是更新后注冊表有什么不同?打開看一下,
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones]
果然和我同事的沒有更新的電腦上的注冊表不一樣,它的那個節點導出來是128KB,我的才72KB,于是我導入他的試了一下,再打開netbeans,再打印出時間,終于和系統的時間一樣了.
下面我把更新前的注冊表文件放在這里,如果有碰到這個問題的朋友,可以先備注你自己的注冊表,然后再導入它,看看行不行,如果行的話就很好了,如果不行,再還原你的注冊表就可以了.
點擊這里下載;
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.