解決java獲取系統時間差8個小時 專題

滄海一滴發表於2013-09-23

在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 a TimeZone, 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

國際日期變更線,西邊

 

 



timeZone可使用的引數:

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          中央標準時間(南澳大利亞/新南威爾斯)

 

 




相關文章