解决java获取系统时间差8个小时 专题

在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          中央标准时间(南澳大利亚/新南威尔斯)

 

 




posted @ 2013-09-23 18:42  沧海一滴  阅读(7593)  评论(2编辑  收藏  举报