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