在WIN7下發現一些Java的程式獲取系統時間比真實時間差了8個小時,懷疑是Java程式沿用了低版本的JDK,獲取時間時取的GSM 0時區,而中國是GSM +8,所以查了8個小時,解決辦法如下:
修改如下:
Date d = new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss "); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); System.out.println(sdf.format(d));
或
Calendar now = Calendar.getInstance();
// 獲取中國北京時區
TimeZone tz = TimeZone.getTimeZone("CCT");//寫法1,簡寫
tz=TimeZone.getTimeZone("Asia/Shanghai");//寫法2,a full name such as"America/Los_Angeles"
tz=TimeZone.getTimeZone("GMT+08:00");//寫法3,custom ID such as "GMT-8:00"
now.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//important
或:
now.setTimeZone(); System.out.println(now.get(Calendar.HOUR_OF_DAY)); System.out.println(now.get(Calendar.MINUTE)); System.out.println(now.get(Calendar.SECOND));
這樣就可以了。
關鍵就是設定TimeZone: TimeZone.getTimeZone("Asia/Shanghai")
http://wmljava.iteye.com/blog/1236906
API:
public static TimeZone getTimeZone(String ID)
- Gets the
TimeZone
for the given ID. - Parameters:
ID
- the ID for aTimeZone
, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x compatibility only and full names should be used.- Returns:
- the specified
TimeZone
, or the GMT zone if the given ID cannot be understood.
標準時間程式碼 |
與GMT的偏移量 |
描述 |
NZDT |
+13:00 |
紐西蘭夏令時 |
IDLE |
+12:00 |
國際日期變更線,東邊 |
NZST |
+12:00 |
紐西蘭標準時間 |
NZT |
+12:00 |
紐西蘭時間 |
AESST |
+11:00 |
澳大利亞東部夏時制 |
CST(ACSST) |
+10:30 |
中澳大利亞標準時間 |
CADT |
+10:30 |
中澳大利亞夏時制 |
SADT |
+10:30 |
南澳大利亞夏時制 |
EST(EAST) |
+10:00 |
東澳大利亞標準時間 |
GST |
+10:00 |
關島標準時間 |
LIGT |
+10:00 |
澳大利亞墨爾本時間 |
CAST |
+9:30 |
中澳大利亞標準時間 |
SAT(SAST) |
+9:30 |
南澳大利亞標準時間 |
WDT(AWSST) |
+9:00 |
澳大利亞西部標準夏令時 |
JST |
+9:00 |
日本標準時間,(USSR Zone 8) |
KST |
+9:00 |
韓國標準時間 |
MT |
+8:30 |
模里西斯時間 |
WST(AWST) |
+8:00 |
澳大利亞西部標準時間 |
CCT |
+8:00 |
中國沿海時間(北京時間) |
JT |
+7:30 |
爪哇時間 |
IT |
+3:30 |
伊朗時間 |
BT |
+3:00 |
巴格達時間 |
EETDST |
+3:00 |
東歐夏時制 |
CETDST |
+2:00 |
中歐夏時制 |
EET |
+2:00 |
東歐,(USSR Zone 1) |
FWT |
+2:00 |
法國冬時制 |
IST |
+2:00 |
以色列標準時間 |
MEST |
+2:00 |
中歐夏時制 |
METDST |
+2:00 |
中歐白晝時間 |
SST |
+2:00 |
瑞典夏時制 |
BST |
+1:00 |
英國夏時制 |
CET |
+1:00 |
中歐時間 |
DNT |
+1:00 |
Dansk Normal Tid |
FST |
+1:00 |
法國夏時制 |
MET |
+1:00 |
中歐時間 |
MEWT |
+1:00 |
中歐冬時制 |
MEZ |
+1:00 |
中歐時區 |
NOR |
+1:00 |
挪威標準時間 |
SET |
+1:00 |
Seychelles Time |
SWT |
+1:00 |
瑞典冬時制 |
WETDST |
+1:00 |
西歐光照利用時間(夏時制) |
GMT |
0:00 |
格林威治標準時間 |
WET |
0:00 |
西歐 |
WAT |
-1:00 |
西非時間 |
NDT |
-2:30 |
紐芬蘭(新大陸)白晝時間 |
ADT |
-03:00 |
大西洋白晝時間 |
NFT |
-3:30 |
紐芬蘭(新大陸)標準時間 |
NST |
-3:30 |
紐芬蘭(新大陸)標準時間 |
AST |
-4:00 |
大西洋標準時間(加拿大) |
EDT |
-4:00 |
(美國)東部夏令時 |
CDT |
-5:00 |
(美國)中部夏令時 |
EST |
-5:00 |
(美國)東部標準時間 |
CST |
-6:00 |
(美國)中部標準時間 |
MDT |
-6:00 |
(美國)山地夏令時 |
MST |
-7:00 |
(美國)山地標準時間 |
PDT |
-7:00 |
(美國)太平洋夏令時 |
PST |
-8:00 |
(美國)太平洋標準時間 |
YDT |
-8:00 |
Yukon夏令時 |
HDT |
-9:00 |
夏威儀/阿拉斯加白晝時間 |
YST |
-9:00 |
Yukon標準時 |
AHST |
-10:00 |
夏威儀-阿拉斯加標準時間 |
CAT |
-10:00 |
中阿拉斯加時間 |
NT |
-11:00 |
州時間(Nome Time) |
IDLW |
-12:00 |
國際日期變更線,西邊 |
America/Belize CST 中央標準時間 America/Cancun CST 中央標準時間 America/Chicago CST 中央標準時間 America/Costa_Rica CST 中央標準時間 America/El_Salvador CST 中央標準時間 America/Guatemala CST 中央標準時間 America/Indiana/Knox CST 中央標準時間 America/Indiana/Tell_City CST 中央標準時間 America/Knox_IN CST 中央標準時間 America/Managua CST 中央標準時間 America/Menominee CST 中央標準時間 America/Merida CST 中央標準時間 America/Mexico_City CST 中央標準時間 America/Monterrey CST 中央標準時間 America/North_Dakota/Center CST 中央標準時間 America/North_Dakota/New_Salem CST 中央標準時間 America/Rainy_River CST 中央標準時間 America/Rankin_Inlet CST 中央標準時間 America/Regina CST 中央標準時間 America/Swift_Current CST 中央標準時間 America/Tegucigalpa CST 中央標準時間 America/Winnipeg CST 中央標準時間 CST CST 中央標準時間 CST6CDT CST 中央標準時間 Canada/Central CST 中央標準時間 Canada/East-Saskatchewan CST 中央標準時間 Canada/Saskatchewan CST 中央標準時間 Mexico/General CST 中央標準時間 SystemV/CST6 CST 中央標準時間 SystemV/CST6CDT CST 中央標準時間 US/Central CST 中央標準時間 US/Indiana-Starke CST 中央標準時間 America/Havana CST Cuba Standard Time Cuba CST Cuba Standard Time Asia/Chongqing CST 中國標準時間 Asia/Chungking CST 中國標準時間 Asia/Harbin CST 中國標準時間 Asia/Kashgar CST 中國標準時間 Asia/Macao CST 中國標準時間 Asia/Macau CST 中國標準時間 Asia/Shanghai CST 中國標準時間 Asia/Taipei CST 中國標準時間 Asia/Urumqi CST 中國標準時間 CTT CST 中國標準時間 PRC CST 中國標準時間 ACT CST 中央標準時間(北領地) Australia/Adelaide CST 中央標準時間(南澳大利亞) Australia/Broken_Hill CST 中央標準時間(南澳大利亞/新南威爾斯) Australia/Darwin CST 中央標準時間(北領地) Australia/North CST 中央標準時間(北領地) Australia/South CST 中央標準時間(南澳大利亞) Australia/Yancowinna CST 中央標準時間(南澳大利亞/新南威爾斯)