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

摘要:
在WIN7下,发现一些Java程序的系统时间比实际时间短8小时。据怀疑,Java程序使用了较低版本的JDK,使用GSM0时区获取时间,而中国是GSM+8,因此检查了8小时。解决方案如下:修改如下:Date=newDate();SimpleDateFormatsdf=newSimpleDateFormat(“yyyy-MM-ddkk:MM:ss”);sdf.setTimeZone(TimeZo

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




免责声明:文章转载自《解决java获取系统时间差8个小时 专题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python使用xlrd读取excel数据时,整数变小数的解决办法iframe,内部网页的缩放下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下对date和timestamp的互转

需要确保时区是正确的 若不是CST就要 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   http://www.linuxidc.com/Linux/2010-09/28537.htm linux下对date和timestamp的互转 1. date 到 timestamp:$ date -d '2...

javascript 中一些奇葩的日期换算

1.获取今天的0时0分0秒(常用于开始日期的获取) new Date(new Date().toLocaleDateString()); // Mon Nov 12 2018 00:00:00 GMT+0800 (中国标准时间) 2.获取一个月前的日期 new Date(new Date().setMonth(new Date().getMonth...

linux 系统时间与硬件时间与中国标准时间

转载原文: https://blog.csdn.net/tvk872/article/details/82957445 Linux下设置时区 提供两种最根本有效的方式,就是更改时区。这里以更改为国内上海时间例子,其他地方时区同理。 方法一 备份文件mv /etc/localtime /etc/localtime.bak 复制时区文件cp /usr/sh...