java timezone prc_TimeZone

八、java.util.TimeZone

Java中的java.util.TimeZone类用于表达时区,当你进行跨时区的java.util.Calendar的计算时,可以尝试使用java.util.TimeZone来连接不同时区的calendar。

注意:在Java 8中日期时间功能中,时区使用的是java.time.ZoneId类,但你只需要在你使用Java 8的日期时间类(像ZonedDateTime类)的时候,才需要用到ZoneId。如果你只是使用一个Calendar类,那你不妨继续使用java.util.TimeZone。

获取一个Calendar的时区

//获取时区:

Calendar calendar = new GregorianCalendar();

TimeZone timeZone = calendar.getTimeZone();

//设置时区:

calendar.setTimeZone(timeZone);

1

2

3

4

5

创建一个TimeZone的实例对象

有两种方式获得TimeZone实例:

TimeZone timeZone1 = TimeZone.getDefault();

TimeZone timeZone2 = TimeZone.getTimeZone("Europe/Copenhagen");

1

2

第一种方法返回默认的时区,即系统当前时区。

第二种方法返回指定的地区ID(在这个例子里是Europe/Copenhagen)的时区,在本篇的末尾将附上一个可用地区ID表。

时区的名字、ID和时差(Offset)

你也可以展示指定TimeZone对象的时区名字、ID和时差:

timeZone.getDisplayName();

timeZone.getID();

timeZone.getOffset( System.currentTimeMillis() );

1

2

3

getOffset(time)方法返回的是以毫秒为单位的,与世界标准时间UTC为time的时差(如此段代码若在上海时区运行,将返回28800,000,即正好8个小时,符合预期中国UTC+8的时区)

不同时区之间的转换

你可以对一个Calendar进行转时区操作,举例如下:

TimeZone timeZone1 = TimeZone.getTimeZone("America/Los_Angeles");

TimeZone timeZone2 = TimeZone.getTimeZone("Europe/Copenhagen");

Calendar calendar = new GregorianCalendar();

long timeCPH = calendar.getTimeInMillis();

System.out.println("timeCPH = " + timeCPH);

System.out.println("hour = " + calendar.get(Calendar.HOUR_OF_DAY));

calendar.setTimeZone(timeZone1);

long timeLA = calendar.getTimeInMillis();

System.out.println("timeLA = " + timeLA);

System.out.println("hour = " + calendar.get(Calendar.HOUR_OF_DAY));

1

2

3

4

5

6

7

8

9

10

11

12

13

14

原作者的代码运行于”Europe/Copenhagen”时区,输出结果如下:

timeHere = 1264881305341

hour = 20

timeLA = 1264881305341

hour = 11

1

2

3

4

注意虽然当天的时间不同了(从20点到了11点),但表达的时间(自1970年初到当前时间的毫秒数)是完全相同的。可见Calendar类可正确完成更改时区这个操作。

附录:可用时区

以下将列出TimeZone中所有可用的时区ID,你也可以通过TimeZone.getAvailableIDs()获得这个列表.

Etc/GMT+12

Etc/GMT+11

MIT

Pacific/Apia

Pacific/Midway

Pacific/Niue

Pacific/Pago_Pago

Pacific/Samoa

US/Samoa

America/Adak

America/Atka

Etc/GMT+10

HST

Pacific/Fakaofo

Pacific/Honolulu

Pacific/Johnston

Pacific/Rarotonga

Pacific/Tahiti

SystemV/HST10

US/Aleutian

US/Hawaii

Pacific/Marquesas

AST

America/Anchorage

America/Juneau

America/Nome

America/Yakutat

Etc/GMT+9

Pacific/Gambier

SystemV/YST9

SystemV/YST9YDT

US/Alaska

America/Dawson

America/Ensenada

America/Los_Angeles

America/Tijuana

America/Vancouver

America/Whitehorse

Canada/Pacific

Canada/Yukon

Etc/GMT+8

Mexico/BajaNorte

PST

PST8PDT

Pacific/Pitcairn

SystemV/PST8

SystemV/PST8PDT

US/Pacific

US/Pacific-New

America/Boise

America/Cambridge_Bay

America/Chihuahua

America/Dawson_Creek

America/Denver

America/Edmonton

America/Hermosillo

America/Inuvik

America/Mazatlan

America/Phoenix

America/Shiprock

America/Yellowknife

Canada/Mountain

Etc/GMT+7

MST

MST7MDT

Mexico/BajaSur

Navajo

PNT

SystemV/MST7

SystemV/MST7MDT

US/Arizona

US/Mountain

America/Belize

America/Cancun

America/Chicago

America/Costa_Rica

America/El_Salvador

America/Guatemala

America/Managua

America/Menominee

America/Merida

America/Mexico_City

America/Monterrey

America/North_Dakota/Center

America/Rainy_River

America/Rankin_Inlet

America/Regina

America/Swift_Current

America/Tegucigalpa

America/Winnipeg

CST

CST6CDT

Canada/Central

Canada/East-Saskatchewan

Canada/Saskatchewan

Chile/EasterIsland

Etc/GMT+6

Mexico/General

Pacific/Easter

Pacific/Galapagos

SystemV/CST6

SystemV/CST6CDT

US/Central

America/Bogota

America/Cayman

America/Detroit

America/Eirunepe

America/Fort_Wayne

America/Grand_Turk

America/Guayaquil

America/Havana

America/Indiana/Indianapolis

America/Indiana/Knox

America/Indiana/Marengo

America/Indiana/Vevay

America/Indianapolis

America/Iqaluit

America/Jamaica

America/Kentucky/Louisville

America/Kentucky/Monticello

America/Knox_IN

America/Lima

America/Louisville

America/Montreal

America/Nassau

America/New_York

America/Nipigon

America/Panama

America/Pangnirtung

America/Port-au-Prince

America/Porto_Acre

America/Rio_Branco

America/Thunder_Bay

America/Toronto

Brazil/Acre

Canada/Eastern

Cuba

EST

EST5EDT

Etc/GMT+5

IET

Jamaica

SystemV/EST5

SystemV/EST5EDT

US/East-Indiana

US/Eastern

US/Indiana-Starke

US/Michigan

America/Anguilla

America/Antigua

America/Aruba

America/Asuncion

America/Barbados

America/Boa_Vista

America/Campo_Grande

America/Caracas

America/Cuiaba

America/Curacao

America/Dominica

America/Glace_Bay

America/Goose_Bay

America/Grenada

America/Guadeloupe

America/Guyana

America/Halifax

America/La_Paz

America/Manaus

America/Martinique

America/Montserrat

America/Port_of_Spain

America/Porto_Velho

America/Puerto_Rico

America/Santiago

America/Santo_Domingo

America/St_Kitts

America/St_Lucia

America/St_Thomas

America/St_Vincent

America/Thule

America/Tortola

America/Virgin

Antarctica/Palmer

Atlantic/Bermuda

Atlantic/Stanley

Brazil/West

Canada/Atlantic

Chile/Continental

Etc/GMT+4

PRT

SystemV/AST4

SystemV/AST4ADT

America/St_Johns

CNT

Canada/Newfoundland

AGT

America/Araguaina

America/Bahia

America/Belem

America/Buenos_Aires

America/Catamarca

America/Cayenne

America/Cordoba

America/Fortaleza

America/Godthab

America/Jujuy

America/Maceio

America/Mendoza

America/Miquelon

America/Montevideo

America/Paramaribo

America/Recife

America/Rosario

America/Sao_Paulo

Antarctica/Rothera

BET

Brazil/East

Etc/GMT+3

America/Noronha

Atlantic/South_Georgia

Brazil/DeNoronha

Etc/GMT+2

America/Scoresbysund

Atlantic/Azores

Atlantic/Cape_Verde

Etc/GMT+1

Africa/Abidjan

Africa/Accra

Africa/Bamako

Africa/Banjul

Africa/Bissau

Africa/Casablanca

Africa/Conakry

Africa/Dakar

Africa/El_Aaiun

Africa/Freetown

Africa/Lome

Africa/Monrovia

Africa/Nouakchott

Africa/Ouagadougou

Africa/Sao_Tome

Africa/Timbuktu

America/Danmarkshavn

Atlantic/Canary

Atlantic/Faeroe

Atlantic/Madeira

Atlantic/Reykjavik

Atlantic/St_Helena

Eire

Etc/GMT

Etc/GMT+0

Etc/GMT-0

Etc/GMT0

Etc/Greenwich

Etc/UCT

Etc/UTC

Etc/Universal

Etc/Zulu

Europe/Belfast

Europe/Dublin

Europe/Lisbon

Europe/London

GB

GB-Eire

GMT

GMT0

Greenwich

Iceland

Portugal

UCT

UTC

Universal

WET

Zulu

Africa/Algiers

Africa/Bangui

Africa/Brazzaville

Africa/Ceuta

Africa/Douala

Africa/Kinshasa

Africa/Lagos

Africa/Libreville

Africa/Luanda

Africa/Malabo

Africa/Ndjamena

Africa/Niamey

Africa/Porto-Novo

Africa/Tunis

Africa/Windhoek

Arctic/Longyearbyen

Atlantic/Jan_Mayen

CET

ECT

Etc/GMT-1

Europe/Amsterdam

Europe/Andorra

Europe/Belgrade

Europe/Berlin

Europe/Bratislava

Europe/Brussels

Europe/Budapest

Europe/Copenhagen

Europe/Gibraltar

Europe/Ljubljana

Europe/Luxembourg

Europe/Madrid

Europe/Malta

Europe/Monaco

Europe/Oslo

Europe/Paris

Europe/Prague

Europe/Rome

Europe/San_Marino

Europe/Sarajevo

Europe/Skopje

Europe/Stockholm

Europe/Tirane

Europe/Vaduz

Europe/Vatican

Europe/Vienna

Europe/Warsaw

Europe/Zagreb

Europe/Zurich

MET

Poland

ART

Africa/Blantyre

Africa/Bujumbura

Africa/Cairo

Africa/Gaborone

Africa/Harare

Africa/Johannesburg

Africa/Kigali

Africa/Lubumbashi

Africa/Lusaka

Africa/Maputo

Africa/Maseru

Africa/Mbabane

Africa/Tripoli

Asia/Amman

Asia/Beirut

Asia/Damascus

Asia/Gaza

Asia/Istanbul

Asia/Jerusalem

Asia/Nicosia

Asia/Tel_Aviv

CAT

EET

Egypt

Etc/GMT-2

Europe/Athens

Europe/Bucharest

Europe/Chisinau

Europe/Helsinki

Europe/Istanbul

Europe/Kaliningrad

Europe/Kiev

Europe/Minsk

Europe/Nicosia

Europe/Riga

Europe/Simferopol

Europe/Sofia

Europe/Tallinn

Europe/Tiraspol

Europe/Uzhgorod

Europe/Vilnius

Europe/Zaporozhye

Israel

Libya

Turkey

Africa/Addis_Ababa

Africa/Asmera

Africa/Dar_es_Salaam

Africa/Djibouti

Africa/Kampala

Africa/Khartoum

Africa/Mogadishu

Africa/Nairobi

Antarctica/Syowa

Asia/Aden

Asia/Baghdad

Asia/Bahrain

Asia/Kuwait

Asia/Qatar

Asia/Riyadh

EAT

Etc/GMT-3

Europe/Moscow

Indian/Antananarivo

Indian/Comoro

Indian/Mayotte

W-SU

Asia/Riyadh87

Asia/Riyadh88

Asia/Riyadh89

Mideast/Riyadh87

Mideast/Riyadh88

Mideast/Riyadh89

Asia/Tehran

Iran

Asia/Aqtau

Asia/Baku

Asia/Dubai

Asia/Muscat

Asia/Oral

Asia/Tbilisi

Asia/Yerevan

Etc/GMT-4

Europe/Samara

Indian/Mahe

Indian/Mauritius

Indian/Reunion

NET

Asia/Kabul

Asia/Aqtobe

Asia/Ashgabat

Asia/Ashkhabad

Asia/Bishkek

Asia/Dushanbe

Asia/Karachi

Asia/Samarkand

Asia/Tashkent

Asia/Yekaterinburg

Etc/GMT-5

Indian/Kerguelen

Indian/Maldives

PLT

Asia/Calcutta

IST

Asia/Katmandu

Antarctica/Mawson

Antarctica/Vostok

Asia/Almaty

Asia/Colombo

Asia/Dacca

Asia/Dhaka

Asia/Novosibirsk

Asia/Omsk

Asia/Qyzylorda

Asia/Thimbu

Asia/Thimphu

BST

Etc/GMT-6

Indian/Chagos

Asia/Rangoon

Indian/Cocos

Antarctica/Davis

Asia/Bangkok

Asia/Hovd

Asia/Jakarta

Asia/Krasnoyarsk

Asia/Phnom_Penh

Asia/Pontianak

Asia/Saigon

Asia/Vientiane

Etc/GMT-7

Indian/Christmas

VST

Antarctica/Casey

Asia/Brunei

Asia/Chongqing

Asia/Chungking

Asia/Harbin

Asia/Hong_Kong

Asia/Irkutsk

Asia/Kashgar

Asia/Kuala_Lumpur

Asia/Kuching

Asia/Macao

Asia/Macau

Asia/Makassar

Asia/Manila

Asia/Shanghai

Asia/Singapore

Asia/Taipei

Asia/Ujung_Pandang

Asia/Ulaanbaatar

Asia/Ulan_Bator

Asia/Urumqi

Australia/Perth

Australia/West

CTT

Etc/GMT-8

Hongkong

PRC

Singapore

Asia/Choibalsan

Asia/Dili

Asia/Jayapura

Asia/Pyongyang

Asia/Seoul

Asia/Tokyo

Asia/Yakutsk

Etc/GMT-9

JST

Japan

Pacific/Palau

ROK

ACT

Australia/Adelaide

Australia/Broken_Hill

Australia/Darwin

Australia/North

Australia/South

Australia/Yancowinna

AET

Antarctica/DumontDUrville

Asia/Sakhalin

Asia/Vladivostok

Australia/ACT

Australia/Brisbane

Australia/Canberra

Australia/Hobart

Australia/Lindeman

Australia/Melbourne

Australia/NSW

Australia/Queensland

Australia/Sydney

Australia/Tasmania

Australia/Victoria

Etc/GMT-10

Pacific/Guam

Pacific/Port_Moresby

Pacific/Saipan

Pacific/Truk

Pacific/Yap

Australia/LHI

Australia/Lord_Howe

Asia/Magadan

Etc/GMT-11

Pacific/Efate

Pacific/Guadalcanal

Pacific/Kosrae

Pacific/Noumea

Pacific/Ponape

SST

Pacific/Norfolk

Antarctica/McMurdo

Antarctica/South_Pole

Asia/Anadyr

Asia/Kamchatka

Etc/GMT-12

Kwajalein

NST

NZ

Pacific/Auckland

Pacific/Fiji

Pacific/Funafuti

Pacific/Kwajalein

Pacific/Majuro

Pacific/Nauru

Pacific/Tarawa

Pacific/Wake

Pacific/Wallis

NZ-CHAT

Pacific/Chatham

Etc/GMT-13

Pacific/Enderbury

Pacific/Tongatapu

Etc/GMT-14

Pacific/Kiritimati

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值