Java 中的时区 ID
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1707799/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
TimeZone ID's in Java
提问by Dima
I'm having weird problem with java TimeZone..
我在使用 java TimeZone 时遇到了奇怪的问题。
Calling TimeZone.getDefault()gives my local time zone, which has an ID "GMT+02:00". Funny thing is that this ID doesn't appear in a list provided by TimeZone.getAvailableIDs(). Apparently my zone appears to be "Etc/GMT+2".
调用TimeZone.getDefault()会给出我的本地时区,它的 ID 为“GMT+02:00”。有趣的是,这个 ID 没有出现在TimeZone.getAvailableIDs()提供的列表中。显然我的区域似乎是“Etc/GMT+2”。
I'm trying to populate a combo with time zones, but it's impossible to put a selection because GMT+02:00 is not in the list.. Anyone seen this problem? Any ideas?
我正在尝试使用时区填充组合,但无法进行选择,因为 GMT+02:00 不在列表中。有人看到过这个问题吗?有任何想法吗?
Update:
更新:
The bottom line is - can't rely on ID strings, must go with the offset as display ID's may vary from system to system.
底线是 - 不能依赖 ID 字符串,必须使用偏移量,因为显示 ID 可能因系统而异。
采纳答案by Andreas Dolk
Looking back on some other SO questions, this seems to be a Java-on-Windows problem. Please have a look at this article, especially answer 1, which points to a wikipedia link that may solve your mapping issue.
回顾其他一些 SO 问题,这似乎是一个 Java-on-Windows 问题。请查看这篇文章,尤其是答案 1,它指向一个维基百科链接,可以解决您的映射问题。
回答by kdgregory
Any timezone can be specified as "GMT" plus/minus an offset. The timezone docrefers to this as a "custom ID".
任何时区都可以指定为“GMT”加/减偏移量。该时区的文档是指此为“自定义ID”。
To populate a drop-down, I think you'd be better off coming up with a specific list of cities/offsets, with an association to the timezone. The array returned by getAvailableIDs()
is huge -- 586 entries in my install -- and you definitely don't want to force your users to plod through this.
要填充下拉列表,我认为您最好提出一个特定的城市/偏移量列表,并与时区相关联。返回的数组getAvailableIDs()
很大——我的安装中有 586 个条目——而且您绝对不想强迫您的用户通过这个工作。
回答by fforw
How about using TimeZone.getAvailableIDs() and group them by the part before the slash and make it a two step selection?
如何使用 TimeZone.getAvailableIDs() 并将它们按斜线前的部分分组并使其成为两步选择?
回答by Pascal Thivent
GMT+02:00 is a custom ID, it won't appear in the output of TimeZone.getAvailableIDs()
(which is huge). What you could do is to ask the user to specify his offset first and then get the available IDs for the given offset. For example, for GMT+02:00, the following piece of code:
GMT+02:00 是一个自定义 ID,它不会出现在TimeZone.getAvailableIDs()
(很大)的输出中。您可以做的是要求用户首先指定他的偏移量,然后获取给定偏移量的可用 ID。例如,对于 GMT+02:00,以下代码段:
for (String string : TimeZone.getAvailableIDs(TimeZone.getTimeZone(
"GMT+02:00").getRawOffset())) {
System.out.println(string);
}
gives the following output:
给出以下输出:
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/Mariehamn Europe/Minsk Europe/Nicosia Europe/Riga Europe/Simferopol Europe/Sofia Europe/Tallinn Europe/Tiraspol Europe/Uzhgorod Europe/Vilnius Europe/Zaporozhye Israel Libya Turkey
It's still big but human browsable this time.
这次它仍然很大,但人类可以浏览。
回答by anonymous engineer
UTC is not GMT. When people (included Java educated engineering) start understanding this. GMT HAS daylight savings (yes!) UTC never changes (!). I would think that everybody should be aware of this just like the rule of leap year or leap minute.
UTC 不是 GMT。当人们(包括受过 Java 教育的工程师)开始理解这一点时。GMT 有夏令时(是的!)UTC 永远不会改变(!)。我想每个人都应该意识到这一点,就像闰年或闰分的规则一样。
回答by Kirby
Joda time has a constant DateTimeZone.UTC
. That class or constant might be of help to you.
http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html
Joda 时间有一个常数DateTimeZone.UTC
。该类或常量可能对您有所帮助。
http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html
Java 8 UPDATE
Java 8 更新
Java 8 also now has ZoneOffset.UTC
: https://docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html#UTC
Java 8 现在也有ZoneOffset.UTC
:https: //docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html#UTC
回答by Basil Bourque
java.time.ZoneId
java.time.ZoneId
TimeZone
is part of the troublesome old date-time classes that are now legacy, supplanted by the java.time classes.
TimeZone
是现在遗留的麻烦的旧日期时间类的一部分,由 java.time 类取代。
In your case, look at ZoneId
and ZoneOffset
. An offset-from-UTC is a number of hours and minutes. A time zone is a history of past, present, and future offsets in use by a region over various periods of time.
在您的情况下,请查看ZoneId
和ZoneOffset
。UTC 偏移量是小时数和分钟数。时区是一个地区在不同时间段内使用的过去、现在和未来偏移量的历史记录。
Get a collection of all known zones via ZoneId.getAvailableZoneIds
. Be sure your JVM has been updated recently enough with info about all time zones in which you have an interest. Politicians have a surprising propensity for frequently changing zone definitions, often with little forewarning.
通过 获取所有已知区域的集合ZoneId.getAvailableZoneIds
。确保您的 JVM 最近已更新,其中包含您感兴趣的所有时区的信息。政客们有一种令人惊讶的倾向,即经常改变区域定义,而且往往几乎没有预先警告。
Set < String > ids = ZoneId.getAvailableZoneIds() ;
As of Java 8 Update 144.
从 Java 8 更新 144 开始。
[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8, Africa/Nairobi, America/Marigot, Asia/Aqtau, Pacific/Kwajalein, America/El_Salvador, Asia/Pontianak, Africa/Cairo, Pacific/Pago_Pago, Africa/Mbabane, Asia/Kuching, Pacific/Honolulu, Pacific/Rarotonga, America/Guatemala, Australia/Hobart, Europe/London, America/Belize, America/Panama, Asia/Chungking, America/Managua, America/Indiana/Petersburg, Asia/Yerevan, Europe/Brussels, GMT, Europe/Warsaw, America/Chicago, Asia/Kashgar, Chile/Continental, Pacific/Yap, CET, Etc/GMT-1, Etc/GMT-0, Europe/Jersey, America/Tegucigalpa, Etc/GMT-5, Europe/Istanbul, America/Eirunepe, Etc/GMT-4, America/Miquelon, Etc/GMT-3, Europe/Luxembourg, Etc/GMT-2, Etc/GMT-9, America/Argentina/Catamarca, Etc/GMT-8, Etc/GMT-7, Etc/GMT-6, Europe/Zaporozhye, Canada/Yukon, Canada/Atlantic, Atlantic/St_Helena, Australia/Tasmania, Libya, Europe/Guernsey, America/Grand_Turk, US/Pacific-New, Asia/Samarkand, America/Argentina/Cordoba, Asia/Phnom_Penh, Africa/Kigali, Asia/Almaty, US/Alaska, Asia/Dubai, Europe/Isle_of_Man, America/Araguaina, Cuba, Asia/Novosibirsk, America/Argentina/Salta, Etc/GMT+3, Africa/Tunis, Etc/GMT+2, Etc/GMT+1, Pacific/Fakaofo, Africa/Tripoli, Etc/GMT+0, Israel, Africa/Banjul, Etc/GMT+7, Indian/Comoro, Etc/GMT+6, Etc/GMT+5, Etc/GMT+4, Pacific/Port_Moresby, US/Arizona, Antarctica/Syowa, Indian/Reunion, Pacific/Palau, Europe/Kaliningrad, America/Montevideo, Africa/Windhoek, Asia/Karachi, Africa/Mogadishu, Australia/Perth, Brazil/East, Etc/GMT, Asia/Chita, Pacific/Easter, Antarctica/Davis, Antarctica/McMurdo, Asia/Macao, America/Manaus, Africa/Freetown, Europe/Bucharest, Asia/Tomsk, America/Argentina/Mendoza, Asia/Macau, Europe/Malta, Mexico/BajaSur, Pacific/Tahiti, Africa/Asmera, Europe/Busingen, America/Argentina/Rio_Gallegos, Africa/Malabo, Europe/Skopje, America/Catamarca, America/Godthab, Europe/Sarajevo, Australia/ACT, GB-Eire, Africa/Lagos, America/Cordoba, Europe/Rome, Asia/Dacca, Indian/Mauritius, Pacific/Samoa, America/Regina, America/Fort_Wayne, America/Dawson_Creek, Africa/Algiers, Europe/Mariehamn, America/St_Johns, America/St_Thomas, Europe/Zurich, America/Anguilla, Asia/Dili, America/Denver, Africa/Bamako, Europe/Saratov, GB, Mexico/General, Pacific/Wallis, Europe/Gibraltar, Africa/Conakry, Africa/Lubumbashi, Asia/Istanbul, America/Havana, NZ-CHAT, Asia/Choibalsan, America/Porto_Acre, Asia/Omsk, Europe/Vaduz, US/Michigan, Asia/Dhaka, America/Barbados, Europe/Tiraspol, Atlantic/Cape_Verde, Asia/Yekaterinburg, America/Louisville, Pacific/Johnston, Pacific/Chatham, Europe/Ljubljana, America/Sao_Paulo, Asia/Jayapura, America/Curacao, Asia/Dushanbe, America/Guyana, America/Guayaquil, America/Martinique, Portugal, Europe/Berlin, Europe/Moscow, Europe/Chisinau, America/Puerto_Rico, America/Rankin_Inlet, Pacific/Ponape, Europe/Stockholm, Europe/Budapest, America/Argentina/Jujuy, Australia/Eucla, Asia/Shanghai, Universal, Europe/Zagreb, America/Port_of_Spain, Europe/Helsinki, Asia/Beirut, Asia/Tel_Aviv, Pacific/Bougainville, US/Central, Africa/Sao_Tome, Indian/Chagos, America/Cayenne, Asia/Yakutsk, Pacific/Galapagos, Australia/North, Europe/Paris, Africa/Ndjamena, Pacific/Fiji, America/Rainy_River, Indian/Maldives, Australia/Yancowinna, SystemV/AST4, Asia/Oral, America/Yellowknife, Pacific/Enderbury, America/Juneau, Australia/Victoria, America/Indiana/Vevay, Asia/Tashkent, Asia/Jakarta, Africa/Ceuta, Asia/Barnaul, America/Recife, America/Buenos_Aires, America/Noronha, America/Swift_Current, Australia/Adelaide, America/Metlakatla, Africa/Djibouti, America/Paramaribo, Europe/Simferopol, Europe/Sofia, Africa/Nouakchott, Europe/Prague, America/Indiana/Vincennes, Antarctica/Mawson, America/Kralendijk, Antarctica/Troll, Europe/Samara, Indian/Christmas, America/Antigua, Pacific/Gambier, America/Indianapolis, America/Inuvik, America/Iqaluit, Pacific/Funafuti, UTC, Antarctica/Macquarie, Canada/Pacific, America/Moncton, Africa/Gaborone, Pacific/Chuuk, Asia/Pyongyang, America/St_Vincent, Asia/Gaza, Etc/Universal, PST8PDT, Atlantic/Faeroe, Asia/Qyzylorda, Canada/Newfoundland, America/Kentucky/Louisville, America/Yakutat, Asia/Ho_Chi_Minh, Antarctica/Casey, Europe/Copenhagen, Africa/Asmara, Atlantic/Azores, Europe/Vienna, ROK, Pacific/Pitcairn, America/Mazatlan, Australia/Queensland, Pacific/Nauru, Europe/Tirane, Asia/Kolkata, SystemV/MST7, Australia/Canberra, MET, Australia/Broken_Hill, Europe/Riga, America/Dominica, Africa/Abidjan, America/Mendoza, America/Santarem, Kwajalein, America/Asuncion, Asia/Ulan_Bator, NZ, America/Boise, Australia/Currie, EST5EDT, Pacific/Guam, Pacific/Wake, Atlantic/Bermuda, America/Costa_Rica, America/Dawson, Asia/Chongqing, Eire, Europe/Amsterdam, America/Indiana/Knox, America/North_Dakota/Beulah, Africa/Accra, Atlantic/Faroe, Mexico/BajaNorte, America/Maceio, Etc/UCT, Pacific/Apia, GMT0, America/Atka, Pacific/Niue, Canada/East-Saskatchewan, Australia/Lord_Howe, Europe/Dublin, Pacific/Truk, MST7MDT, America/Monterrey, America/Nassau, America/Jamaica, Asia/Bishkek, America/Atikokan, Atlantic/Stanley, Australia/NSW, US/Hawaii, SystemV/CST6, Indian/Mahe, Asia/Aqtobe, America/Sitka, Asia/Vladivostok, Africa/Libreville, Africa/Maputo, Zulu, America/Kentucky/Monticello, Africa/El_Aaiun, Africa/Ouagadougou, America/Coral_Harbour, Pacific/Marquesas, Brazil/West, America/Aruba, America/North_Dakota/Center, America/Cayman, Asia/Ulaanbaatar, Asia/Baghdad, Europe/San_Marino, America/Indiana/Tell_City, America/Tijuana, Pacific/Saipan, SystemV/YST9, Africa/Douala, America/Chihuahua, America/Ojinaga, Asia/Hovd, America/Anchorage, Chile/EasterIsland, America/Halifax, Antarctica/Rothera, America/Indiana/Indianapolis, US/Mountain, Asia/Damascus, America/Argentina/San_Luis, America/Santiago, Asia/Baku, America/Argentina/Ushuaia, Atlantic/Reykjavik, Africa/Brazzaville, Africa/Porto-Novo, America/La_Paz, Antarctica/DumontDUrville, Asia/Taipei, Antarctica/South_Pole, Asia/Manila, Asia/Bangkok, Africa/Dar_es_Salaam, Poland, Atlantic/Madeira, Antarctica/Palmer, America/Thunder_Bay, Africa/Addis_Ababa, Asia/Yangon, Europe/Uzhgorod, Brazil/DeNoronha, Asia/Ashkhabad, Etc/Zulu, America/Indiana/Marengo, America/Creston, America/Punta_Arenas, America/Mexico_City, Antarctica/Vostok, Asia/Jerusalem, Europe/Andorra, US/Samoa, PRC, Asia/Vientiane, Pacific/Kiritimati, America/Matamoros, America/Blanc-Sablon, Asia/Riyadh, Iceland, Pacific/Pohnpei, Asia/Ujung_Pandang, Atlantic/South_Georgia, Europe/Lisbon, Asia/Harbin, Europe/Oslo, Asia/Novokuznetsk, CST6CDT, Atlantic/Canary, America/Knox_IN, Asia/Kuwait, SystemV/HST10, Pacific/Efate, Africa/Lome, America/Bogota, America/Menominee, America/Adak, Pacific/Norfolk, Europe/Kirov, America/Resolute, Pacific/Tarawa, Africa/Kampala, Asia/Krasnoyarsk, Greenwich, SystemV/EST5, America/Edmonton, Europe/Podgorica, Australia/South, Canada/Central, Africa/Bujumbura, America/Santo_Domingo, US/Eastern, Europe/Minsk, Pacific/Auckland, Africa/Casablanca, America/Glace_Bay, Canada/Eastern, Asia/Qatar, Europe/Kiev, Singapore, Asia/Magadan, SystemV/PST8, America/Port-au-Prince, Europe/Belfast, America/St_Barthelemy, Asia/Ashgabat, Africa/Luanda, America/Nipigon, Atlantic/Jan_Mayen, Brazil/Acre, Asia/Muscat, Asia/Bahrain, Europe/Vilnius, America/Fortaleza, Etc/GMT0, US/East-Indiana, America/Hermosillo, America/Cancun, Africa/Maseru, Pacific/Kosrae, Africa/Kinshasa, Asia/Kathmandu, Asia/Seoul, Australia/Sydney, America/Lima, Australia/LHI, America/St_Lucia, Europe/Madrid, America/Bahia_Banderas, America/Montserrat, Asia/Brunei, America/Santa_Isabel, Canada/Mountain, America/Cambridge_Bay, Asia/Colombo, Australia/West, Indian/Antananarivo, Australia/Brisbane, Indian/Mayotte, US/Indiana-Starke, Asia/Urumqi, US/Aleutian, Europe/Volgograd, America/Lower_Princes, America/Vancouver, Africa/Blantyre, America/Rio_Branco, America/Danmarkshavn, America/Detroit, America/Thule, Africa/Lusaka, Asia/Hong_Kong, Iran, America/Argentina/La_Rioja, Africa/Dakar, SystemV/CST6CDT, America/Tortola, America/Porto_Velho, Asia/Sakhalin, Etc/GMT+10, America/Scoresbysund, Asia/Kamchatka, Asia/Thimbu, Africa/Harare, Etc/GMT+12, Etc/GMT+11, Navajo, America/Nome, Europe/Tallinn, Turkey, Africa/Khartoum, Africa/Johannesburg, Africa/Bangui, Europe/Belgrade, Jamaica, Africa/Bissau, Asia/Tehran, WET, Europe/Astrakhan, Africa/Juba, America/Campo_Grande, America/Belem, Etc/Greenwich, Asia/Saigon, America/Ensenada, Pacific/Midway, America/Jujuy, Africa/Timbuktu, America/Bahia, America/Goose_Bay, America/Virgin, America/Pangnirtung, Asia/Katmandu, America/Phoenix, Africa/Niamey, America/Whitehorse, Pacific/Noumea, Asia/Tbilisi, America/Montreal, Asia/Makassar, America/Argentina/San_Juan, Hongkong, UCT, Asia/Nicosia, America/Indiana/Winamac, SystemV/MST7MDT, America/Argentina/ComodRivadavia, America/Boa_Vista, America/Grenada, Asia/Atyrau, Australia/Darwin, Asia/Khandyga, Asia/Kuala_Lumpur, Asia/Famagusta, Asia/Thimphu, Asia/Rangoon, Europe/Bratislava, Asia/Calcutta, America/Argentina/Tucuman, Asia/Kabul, Indian/Cocos, Japan, Pacific/Tongatapu, America/New_York, Etc/GMT-12, Etc/GMT-11, Etc/GMT-10, SystemV/YST9YDT, Europe/Ulyanovsk, Etc/GMT-14, Etc/GMT-13, W-SU, America/Merida, EET, America/Rosario, Canada/Saskatchewan, America/St_Kitts, Arctic/Longyearbyen, America/Fort_Nelson, America/Caracas, America/Guadeloupe, Asia/Hebron, Indian/Kerguelen, SystemV/PST8PDT, Africa/Monrovia, Asia/Ust-Nera, Egypt, Asia/Srednekolymsk, America/North_Dakota/New_Salem, Asia/Anadyr, Australia/Melbourne, Asia/Irkutsk, America/Shiprock, America/Winnipeg, Europe/Vatican, Asia/Amman, Etc/UTC, SystemV/AST4ADT, Asia/Tokyo, America/Toronto, Asia/Singapore, Australia/Lindeman, America/Los_Angeles, SystemV/EST5EDT, Pacific/Majuro, America/Argentina/Buenos_Aires, Europe/Nicosia, Pacific/Guadalcanal, Europe/Athens, US/Pacific, Europe/Monaco]
[亚洲/亚丁、美洲/库亚巴、等/GMT+9、等/GMT+8、非洲/内罗毕、美洲/马里戈特、亚洲/阿克套、太平洋/夸贾林、美洲/萨尔瓦多、亚洲/坤甸、非洲/开罗、太平洋/Pago_Pago、非洲/姆巴巴尼、亚洲/古晋、太平洋/檀香山、太平洋/拉罗汤加、美洲/危地马拉、澳大利亚/霍巴特、欧洲/伦敦、美洲/伯利兹、美洲/巴拿马、亚洲/重庆、美洲/马那瓜、美洲/印第安纳/彼得堡,亚洲/埃里温,欧洲/布鲁塞尔,格林威治标准时间,欧洲/华沙,美洲/芝加哥,亚洲/喀什,智利/大陆,太平洋/雅浦,欧洲中部时间,等/GMT-1,等/GMT-0,欧洲/泽西, America/Tegucigalpa, Etc/GMT-5, Europe/Istanbul, America/Eirunepe, Etc/GMT-4, America/Miquelon, Etc/GMT-3, Europe/Luxembourg, Etc/GMT-2, Etc/GMT-9 ,美国/阿根廷/卡塔马卡,等/GMT-8,等/GMT-7,等/GMT-6,欧洲/扎波罗热,加拿大/育空,加拿大/大西洋,大西洋/圣赫勒拿,澳大利亚/塔斯马尼亚,利比亚,欧洲/根西岛、美洲/大土耳其、美国/新太平洋、亚洲/撒马尔罕、美洲/阿根廷/科尔多瓦、亚洲/金边、非洲/基加利、亚洲/阿拉木图、美国/阿拉斯加、亚洲/迪拜、欧洲/曼岛、美洲/阿拉瓜伊纳、古巴、亚洲/新西伯利亚、美洲/阿根廷/萨尔塔、等/GMT+3、非洲/突尼斯、等/GMT+2、等/GMT+1、太平洋/法考福、非洲/的黎波里、等/GMT+0、以色列、非洲/班珠尔、Etc/GMT+7、印度/科摩罗、Etc/GMT+6、Etc/GMT+5、Etc/GMT+4、太平洋/Port_Moresby、美国/亚利桑那、南极洲/Syowa、印度/留尼汪、太平洋/帕劳、欧洲/加里宁格勒、美洲/蒙得维的亚、非洲/温得和克、亚洲/卡拉奇、非洲/摩加迪沙、澳大利亚/珀斯、巴西/东部、等/格林威治标准时间、亚洲/赤塔、太平洋/复活节、南极洲/戴维斯、南极洲/麦克默多,亚洲/澳门,美洲/马瑙斯,非洲/弗里敦,欧洲/布加勒斯特,亚洲/托木斯克,美洲/阿根廷/门多萨,亚洲/澳门,欧洲/马耳他,墨西哥/南下,太平洋/大溪地、非洲/阿斯梅拉、欧洲/布辛根、美洲/阿根廷/里约加列戈斯、非洲/马拉博、欧洲/斯科普里、美洲/卡塔马卡、美洲/戈德萨布、欧洲/萨拉热窝、澳大利亚/ACT、GB-爱尔兰、非洲/拉各斯、美洲/科尔多瓦、欧洲/罗马、亚洲/达卡、印度/毛里求斯、太平洋/萨摩亚、美洲/里贾纳、美洲/韦恩堡、美洲/道森_克里克、非洲/阿尔及尔、欧洲/玛丽港、美洲/圣约翰、美洲/圣托马斯、欧洲/苏黎世、美洲/安圭拉、亚洲/帝力、美洲/丹佛、非洲/巴马科、欧洲/萨拉托夫、英国、墨西哥/通用、太平洋/瓦利斯、欧洲/直布罗陀、非洲/科纳克里、非洲/卢本巴希、亚洲/伊斯坦布尔、美洲/哈瓦那、NZ-CHAT、亚洲/乔巴山、美洲/波尔图_阿克里、亚洲/鄂木斯克、欧洲/瓦杜兹、美国/密歇根、亚洲/达卡、美洲/巴巴多斯、欧洲/蒂拉斯波尔、大西洋/佛得角、亚洲/叶卡捷琳堡、美洲/路易斯维尔、太平洋/约翰斯顿,太平洋/查塔姆,欧洲/卢布尔雅那、美洲/圣保罗、亚洲/查亚普拉、美洲/库拉索、亚洲/杜尚别、美洲/圭亚那、美洲/瓜亚基尔、美洲/马提尼克、葡萄牙、欧洲/柏林、欧洲/莫斯科、欧洲/基希讷乌、美洲/波多黎各、美洲/Rankin_Inlet、太平洋/波纳佩、欧洲/斯德哥尔摩、欧洲/布达佩斯、美洲/阿根廷/胡胡伊、澳大利亚/尤克拉、亚洲/上海、环球、欧洲/萨格勒布、美洲/西班牙港、欧洲/赫尔辛基、亚洲/贝鲁特、亚洲/特拉维夫、太平洋/布干维尔、美国/中部、非洲/圣多美、印度/查戈斯、美洲/卡宴、亚洲/雅库茨克、太平洋/加拉帕戈斯、澳大利亚/北部、欧洲/巴黎、非洲/恩贾梅纳、太平洋/斐济、美国/Rainy_River、印度/马尔代夫、澳大利亚/Yancowinna、SystemV/AST4、亚洲/口腔、美洲/黄刀、太平洋/恩德伯里、美洲/朱诺、澳大利亚/维多利亚、美洲/印第安纳/韦韦、亚洲/塔什干、亚洲/雅加达、非洲/休达、亚洲/巴尔瑙尔,美洲/累西腓、美洲/布宜诺斯艾利斯、美洲/诺罗尼亚、美洲/斯威夫特_Current、澳大利亚/阿德莱德、美洲/梅特拉卡特拉、非洲/吉布提、美洲/帕拉马里博、欧洲/辛菲罗波尔、欧洲/索非亚、非洲/努瓦克肖特、欧洲/布拉格、美洲/印第安纳州/文森斯、南极洲/莫森、美洲/克拉伦代克、南极洲/巨魔、欧洲/萨马拉、印度/圣诞节、美洲/安提瓜、太平洋/甘比尔、美洲/印第安纳波利斯、美洲/因纽维克、美洲/伊魁特、太平洋/富纳富提、UTC、南极洲/麦格理、加拿大/太平洋、美洲/蒙克顿、非洲/哈博罗内、太平洋/楚克、亚洲/平壤、美洲/圣文森特、亚洲/加沙、等/环球、PST8PDT、大西洋/法罗、亚洲/Qyzylorda、加拿大/纽芬兰、美洲/肯塔基州/路易斯维尔、美洲/雅库塔特、亚洲/胡志明市、南极洲/凯西、欧洲/哥本哈根、非洲/阿斯马拉、大西洋/亚速尔群岛、欧洲/维也纳、韩国、太平洋/皮特凯恩、美洲/马萨特兰、澳大利亚/昆士兰、太平洋/瑙鲁、欧洲/地拉那、亚洲/加尔各答、SystemV/MST7、澳大利亚/堪培拉、MET、澳大利亚/Broken_Hill、欧洲/里加、美洲/多米尼加、非洲/阿比让、美洲/门多萨、美洲/圣塔伦、夸贾林岛、美洲/亚松森、亚洲/乌兰巴托、新西兰、美洲/博伊西、澳大利亚/居里、EST5EDT、太平洋/关岛、太平洋/威克、大西洋/百慕大、美洲/哥斯达黎加、美洲/道森、亚洲/重庆、爱尔兰、欧洲/阿姆斯特丹,美洲/印第安纳州/诺克斯,美洲/北达科他州/比尤拉,非洲/阿克拉,大西洋/法罗,墨西哥/北下,美洲/马塞约,等/UCT,太平洋/阿皮亚,GMT0,美洲/阿特卡,太平洋/纽埃,加拿大/东萨斯喀彻温省、澳大利亚/Lord_Howe、欧洲/都柏林、太平洋/特鲁克、MST7MDT、美洲/蒙特雷、美洲/拿骚、美洲/牙买加、亚洲/比什凯克、美洲/阿提科坎、大西洋/斯坦利、澳大利亚/新南威尔士州、美国/夏威夷、 SystemV/CST6,印度/马埃,亚洲/阿克托比,美洲/锡特卡、亚洲/符拉迪沃斯托克、非洲/利伯维尔、非洲/马普托、祖鲁、美洲/肯塔基/蒙蒂塞洛、非洲/El_Aaiun、非洲/瓦加杜古、美洲/珊瑚港、太平洋/马克萨斯、巴西/西部、美洲/阿鲁巴、美洲/ North_Dakota/Center, America/Cayman, Asia/Ulaanbaatar, Asia/Baghdad, Europe/San_Marino, America/Indiana/Tell_City, America/Tijuana, Pacific/Saipan, SystemV/YST9, Africa/Douala, America/Chihuahua, America/Ojinaga,亚洲/霍夫德,美洲/安克雷奇,智利/复活节岛,美洲/哈利法克斯,南极洲/罗瑟拉,美洲/印第安纳州/印第安纳波利斯,美国/山区,亚洲/大马士革,美洲/阿根廷/圣路易斯,美洲/圣地亚哥,亚洲/巴库,美洲/阿根廷/乌斯怀亚、大西洋/雷克雅未克、非洲/布拉柴维尔、非洲/波多诺沃、美洲/拉巴斯、南极洲/杜蒙杜维尔、亚洲/台北、南极洲/南极、亚洲/马尼拉、亚洲/曼谷、非洲/达斯萨拉姆、波兰、大西洋/马德拉、南极洲/帕尔默、美洲/雷湾、非洲/亚的斯亚贝巴、亚洲/仰光、欧洲/乌日哥罗德、巴西/德诺罗尼亚、亚洲/阿什哈巴德、等/祖鲁、美洲/印地安那/马伦戈、美洲/克雷斯顿、美洲/蓬塔_阿雷纳斯、美洲/墨西哥城、南极洲/东方、亚洲/耶路撒冷、欧洲/安道尔、美国/萨摩亚、中国、亚洲/万象、太平洋/基里提马提、美洲/马塔莫罗斯、美洲/布兰克-萨布隆、亚洲/利雅得、冰岛、太平洋/波纳佩、亚洲/Ujung_Pandang、大西洋/South_Georgia、欧洲/里斯本、亚洲/哈尔滨、欧洲/奥斯陆、亚洲/新库兹涅茨克、CST6CDT、大西洋/加那利、美洲/Knox_IN、亚洲/科威特、SystemV/HST10、太平洋/埃法特、非洲/洛美、美洲/波哥大、美洲/梅诺米尼、美洲/阿达克、太平洋/诺福克、欧洲/基洛夫、美洲/Resolute、太平洋/塔拉瓦、非洲/坎帕拉、亚洲/克拉斯诺亚尔斯克、格林威治、SystemV/EST5、美洲/埃德蒙顿、欧洲/波德戈里察、澳大利亚/南部,加拿大/中部、非洲/布琼布拉、美洲/圣多明各、美国/东部、欧洲/明斯克、太平洋/奥克兰、非洲/卡萨布兰卡、美洲/格拉斯湾、加拿大/东部、亚洲/卡塔尔、欧洲/基辅、新加坡、亚洲/马加丹、 SystemV/PST8、美洲/太子港、欧洲/贝尔法斯特、美洲/圣巴泰勒米、亚洲/阿什哈巴德、非洲/罗安达、美洲/尼皮贡、大西洋/Jan_Mayen、巴西/阿克里、亚洲/马斯喀特、亚洲/巴林、欧洲/维尔纽斯,美洲/福塔雷萨,等/格林威治标准时间0,美国/东印第安纳州,美洲/埃莫西约,美洲/坎昆,非洲/马塞卢,太平洋/科斯雷,非洲/金沙萨,亚洲/加德满都,亚洲/首尔,澳大利亚/悉尼,美洲/利马、澳大利亚/LHI、美洲/圣卢西亚、欧洲/马德里、美洲/巴伊亚_班德拉斯、美洲/蒙特塞拉特、亚洲/文莱、美洲/圣伊莎贝尔、加拿大/山、美洲/剑桥湾、亚洲/科伦坡、澳大利亚/西部、印度/塔那那利佛、澳大利亚/布里斯班、印度/马约特岛、美国/印第安纳-斯塔克、亚洲/乌鲁木齐、美国/阿留申、欧洲/伏尔加格勒、美洲/Lower_Princes、美洲/温哥华、非洲/布兰太尔、美洲/里约布兰科、美洲/丹麦沙文、美洲/底特律、美洲/图勒、非洲/卢萨卡、亚洲/香港、伊朗、美洲/阿根廷/拉里奥哈、非洲/达喀尔、SystemV/CST6CDT、美洲/托尔托拉、美洲/Porto_Velho、亚洲/萨哈林、等/格林威治标准时间+10、美洲/斯科斯比松、亚洲/堪察加、亚洲/廷布、非洲/哈拉雷、等/格林威治标准时间+12、等/格林威治标准时间+11、纳瓦霍、美洲/诺姆、欧洲/塔林、土耳其、非洲/喀土穆、非洲/约翰内斯堡、非洲/班吉、欧洲/贝尔格莱德、牙买加、非洲/比绍、亚洲/德黑兰、WET、欧洲/阿斯特拉罕、非洲/朱巴、美洲/Campo_Grande、美洲/贝伦、等/格林威治、亚洲/西贡、美洲/恩塞纳达、太平洋/中途岛、美洲/胡胡伊、非洲/廷巴克图、美洲/巴伊亚、 America/Goose_Bay、America/Virgin、America/Pangnirtung、Asia/Katmandu、美洲/凤凰城、非洲/尼亚美、美洲/怀特霍斯、太平洋/努美阿、亚洲/第比利斯、美洲/蒙特利尔、亚洲/望加锡、美洲/阿根廷/圣胡安、香港、UCT、亚洲/尼科西亚、美洲/印第安纳州/Winamac、SystemV/ MST7MDT, America/Argentina/ComodRivadavia, America/Boa_Vista, America/Grenada, Asia/Atyrau, Australia/Darwin, Asia/Khandyga, Asia/Kuala_Lumpur, Asia/Famagusta, Asia/Thimphu, Asia/Rangoon, Europe/Bratislava, Asia/加尔各答、美洲/阿根廷/土库曼、亚洲/喀布尔、印度/科科斯、日本、太平洋/汤加塔普、美洲/New_York、Etc/GMT-12、Etc/GMT-11、Etc/GMT-10、SystemV/YST9YDT、欧洲/ Ulyanovsk, Etc/GMT-14, Etc/GMT-13, W-SU, America/Merida, EET, America/Rosario, Canada/Saskatchewan, America/St_Kitts, Arctic/Longyearbyen, America/Fort_Nelson, America/Caracas, America/瓜德罗普岛、亚洲/希伯伦、印度/凯尔盖朗、SystemV/PST8PDT、非洲/蒙罗维亚、亚洲/乌斯季-内拉、埃及、亚洲/斯雷德涅科林斯克、美洲/北达科他州/新塞勒姆、亚洲/阿纳德尔、澳大利亚/墨尔本、亚洲/伊尔库茨克、美洲/Shiprock、美洲/温尼伯、欧洲/梵蒂冈、亚洲/安曼、等/UTC、 SystemV/AST4ADT、亚洲/东京、美洲/多伦多、亚洲/新加坡、澳大利亚/林德曼、美洲/洛杉矶、SystemV/EST5EDT、太平洋/马朱罗、美洲/阿根廷/布宜诺斯艾利斯、欧洲/尼科西亚、太平洋/瓜达尔卡纳尔岛、欧洲/雅典、美国/太平洋,欧洲/摩纳哥]欧洲/摩纳哥]欧洲/摩纳哥]
Get your JVM's current default time zone.
获取 JVM 当前的默认时区。
ZoneId z = ZoneId.systemDefault() ;
America/Los_Angeles
美国/洛杉矶
Be aware that the JVM's default can be changed at any moment during runtime by any code in any thread of any app within the JVM. Generally better to specify the desired/expected time zone rather than rely on system default.
请注意,JVM 中的任何应用程序的任何线程中的任何代码都可以在运行时随时更改 JVM 的默认值。通常最好指定所需/预期的时区而不是依赖系统默认值。
Specify a proper time zone namein the format of continent/region
, such as America/Montreal
, Africa/Casablanca
, or Pacific/Auckland
. Never use the 3-4 letter abbreviation such as EST
or IST
as they are nottrue time zones, not standardized, and not even unique(!).
以、、 或等格式指定正确的时区名称。永远不要使用 3-4 个字母的缩写,例如或因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。continent/region
America/Montreal
Africa/Casablanca
Pacific/Auckland
EST
IST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
If you want to know the offset in play at a particular moment for a particular zone, ask via the ZoneRules
object.
如果您想知道特定区域在特定时刻的偏移量,请通过ZoneRules
对象询问。
ZoneOffset offsetInEffectNow = z.getRules().getOffset( Instant.now() );
See all the above code run live at IdeOne.com.
查看以上所有在 IdeOne.com 上实时运行的代码。
The bottom line is - can't rely on ID strings, must go with the offset as display ID's may vary from system to system.
底线是 - 不能依赖 ID 字符串,必须使用偏移量,因为显示 ID 可能因系统而异。
No, time zone identifiers are documented and consistent. See this list in Wikipediatracked by the IANA.
不,时区标识符已记录并保持一致。请参阅IANA跟踪的Wikipedia 中的此列表。
I do not know much about what TimeZone
was doing, but if like the rest of the legacy date-time classes, it may not be wisely designed. Also not sure how your host OS and JVM was configured. Hard to diagnose as you did not provide enough information.
我不太了解TimeZone
在做什么,但如果像其他遗留的日期时间类一样,它可能设计得不明智。也不确定您的主机操作系统和 JVM 是如何配置的。很难诊断,因为您没有提供足够的信息。
About java.time
关于 java.time
The java.timeframework is built into Java 8 and later. These classes supplant the troublesome old legacydate-time classes such as java.util.Date
, Calendar
, & SimpleDateFormat
.
该java.time框架是建立在Java 8和更高版本。这些类取代了麻烦的旧的遗留日期时间类,例如java.util.Date
, Calendar
, & SimpleDateFormat
。
The Joda-Timeproject, now in maintenance mode, advises migration to the java.timeclasses.
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范是JSR 310。
Where to obtain the java.time classes?
从哪里获得 java.time 类?
- Java SE 8, Java SE 9, and later
- Built-in.
- Part of the standard Java API with a bundled implementation.
- Java 9 adds some minor features and fixes.
- Java SE 6and Java SE 7
- Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
- Android
- The ThreeTenABPproject adapts ThreeTen-Backport(mentioned above) for Android specifically.
- See How to use ThreeTenABP….
- Java SE 8、Java SE 9及更高版本
- 内置。
- 具有捆绑实现的标准 Java API 的一部分。
- Java 9 添加了一些小功能和修复。
- Java SE 6和Java SE 7
- 多的java.time功能后移植到Java 6和7在ThreeTen-反向移植。
- 安卓
- 所述ThreeTenABP项目适应ThreeTen-反向移植(上述)为Android特异性。
- 请参阅如何使用ThreeTenABP ...。
The ThreeTen-Extraproject extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval
, YearWeek
, YearQuarter
, and more.
该ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到 java.time 的试验场。你可能在这里找到一些有用的类,比如Interval
,YearWeek
,YearQuarter
,和更多。