轉:Java通過new Date() 得到的時間與系統時間差N個小時的解決辦法
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2011-12/48603.htm
般情況下不會出現如題所示的問題,既然出現了我們就要想辦法解決之。以我的機器為例,我的當前系統時間是北京時間2011-08-31T08:00:00,但是newDate()得到的卻是:2011-08-31T00:00:00。表示java得到的時間比當前系統時間提前了8個小時,那么我們就要想辦法把java得到的時間向后推遲8個小時。解決的辦法是:
1、找到你用的jre文件夾,以本機為例:C:\Program Files\Java\jdk1.5.0\jre
2、在上述文件夾下有個zi文件夾,我們的工作都在這里。
3、zi文件夾下有一個Etc文件夾,我們要做的工作就是從這個文件夾下找到對應的GMT文件替換zi下GMT文件。
4、選擇哪個文件呢?如果java獲取的時間+N=當前系統時間,就選擇GMT-N文件,重命名為GMT,覆蓋掉zi下的GMT文件,如果java獲取的時間-N=當前系統時間,就選擇GMT+N文件,重命名為GMT,覆蓋掉zi下的GMT文件。
5、再運行一下你的程序看時間是不是正確了,如果還是不正確,請確認你的jre目錄是否選得正確。
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2011-12/48603.htm
======================================================
64 位JDK出現八小時時差解決方法
發布的項目使用64位JDK,Java獲取的時間總比正常的時候慢8小時,但服務器的時間及時區都是正確的,解決方法:
設置JVM的默認時區為東八區(北京時間)
在下面四個目錄:
Java\jre6\lib\zi\Etc Java\jre6\lib\zi Java\jdk1.6.0_18\jre\lib\zi\Etc Java\jdk1.6.0_18\jre\lib\zi
,復制完畢,重新運行一下java程序問題即可解決!