1

我需要存储一个 hashmap,key 是一个 String,val 是标准的 Java TimeZone。在 (1) 存储 TimeZone 的 Id 字符串和 (2) 存储对象本身之间,这样可以节省更多内存。直觉上我认为是1,但是有朋友告诉我TimeZone是工厂类,所以(2)效率更高。你的意见?tks

1:

gmtToIanaMap.put("GMT+10:00", "Australia/Sydney");

2:

gmtToIanaMap.put("GMT+10:00", TimeZone.getTimeZone("Australia/Sydney"));
4

2 回答 2

0

加载后,每个时区信息都将被缓存(在 sun.util.calendar.ZoneInfoFile 中),所以这并不重要。如果在访问该值之后,您仍然需要 TimeZone 对象,我将存储 TimeZone 对象。

也就是说,正如评论中所提到的,我不确定你是否应该为此担心太多。据我了解,您将在那里有类似 24+ 的条目(让我们说 50 以涵盖 x + 30 分钟的偏移类型)。时区信息存储在磁盘上的 jre/lib/zi 下。其中大多数的大小都在 1k 以下。内存中的对象不会大很多,所以我们说的是 50k。除非你的记忆力真的很紧,否则这几乎是无关紧要的。

最后,所有这些实际上都依赖于一个 jre 实现,我不确定您是否希望以此为基础进行设计。

于 2013-07-11T09:30:26.590 回答
0

tl;博士

你的意见?tks

你所要求的,将偏移量映射到区域,是没有意义的。时区在不同的时间点使用不同的偏移量——这就是时区的定义!

另外:不需要映射。只需询问每个区域的偏移量。

ZoneId                       // Represent a time zone.
.of( "Australia/Sydney" )    // Get a time zone by its proper name `Continent/Region`. Never use 2-4 letter pseudo-codes such as `CST`. 
.getRules()                  // Get the past, present, and changes to the offset used by the people of this region (this time zone).
.getOffset(                  // Get the offset in use at a particular moment in this time zone.
    Instant.now()            // Capture the current moment.
)                            // Returns a `ZoneOffset` object.

请参阅在 IdeOne.com 上实时运行的代码

+11:00

哎呀!此时,Australia/Sydney比 UTC 早 11 小时,而不是您预期的 10 小时。

将偏移量映射到区域不符合逻辑

偏移量在任何时区因日期而异。虽然时区Australia/Sydney可能在一个日期提前十个小时,但在另一个日期可能不是十个小时。世界各地的政治家都表现出频繁更改其管辖范围内使用的 UTC 偏移量的倾向。有时他们会在观察夏令时 (DST)时每年更改两次。有时他们会出于外交、政治或军事原因对其进行更改。因此,没有日期上下文的区域偏移地图是没有意义的。

您可以随时使用ZoneId和生成特定时区的偏移量ZoneRules来生成ZoneOffset.

ZoneId z = ZoneId.of( "Australia/Sydney" ) ;
ZoneRules rules = z.getRules() ;
ZoneOffset offset = rules.getOffset( Instant.now() ) ;  // Get the offset currently in use at this moment.

了解与 UTC 的偏移量只是几个小时-分钟-秒。时区更多。时区是特定地区的人们使用的偏移量的过去、现在和未来变化的历史。

Map < ZoneOffset, Set < ZoneId > >

在任何给定时刻,任何数量的时区都可能巧合地具有相同的偏移量(本初子午线前后相同的小时-分钟-秒数)。

因此,创建一个地图可能是有意义的,在该地图中,在特定时刻,我们使用该偏移量ZoneOffset收集一组时区 ( )。ZoneId这将是一个集合,其中键是 a ZoneOffset,值是Set对象的 a ZoneId

这称为multimap,其中键映射到值的集合而不是单个值。在现代 Java 中,我们可以通过使用 lambda 语法来获得多重映射的效果Map::computeIfAbsent

Map < ZoneOffset, Set < ZoneId > > multimap = new TreeMap <>(); // Use `TreeMap` to keep the keys (the offsets) in ascending order.

Instant instant = Instant.now();
Set < String > zoneNames = ZoneId.getAvailableZoneIds();
for ( String zoneName : zoneNames )
{
    ZoneId zoneId = ZoneId.of( zoneName );
    ZoneOffset offset = zoneId.getRules().getOffset( instant );
    multimap.computeIfAbsent( offset , ( ZoneOffset key ) -> new HashSet <>() ).add( zoneId );  // Or change `HashSet` to `TreeSet` to keep the `ZoneId` objects in sorted order.
}

转储到控制台。

System.out.println( "multimap.toString() of the offset in use by various time zones at: " + instant );
System.out.println( "multimap = " + multimap );

跑的时候。

multimap.toString() 不同时区使用的偏移量:2020-01-28T00:07:36.146290Z

multimap = {+14:00=[Pacific/Apia, Pacific/Kiritimati, Etc/GMT-14], +13:45=[Pacific/Chatham, NZ-CHAT], +13:00=[Antarctica/McMurdo, Pacific /Tongatapu, Pacific/Enderbury, Pacific/Fakaofo, NZ, Antarctica/South_Pole, Pacific/Auckland, Etc/GMT-13], +12:00=[Asia/Anadyr, Pacific/Wake, Pacific/Majuro, Pacific/Funafuti, Pacific/Nauru, Etc/GMT-12, Pacific/Fiji, Pacific/Tarawa, Asia/Kamchatka, Kwajalein, Pacific/Wallis, Pacific/Kwajalein], +11:00=[Australia/Sydney, Pacific/Efate, Australia/LHI , Asia/Magadan, Pacific/Norfolk, Antarctica/Macquarie, Australia/Lord_Howe, Australia/Victoria, Etc/GMT-11, Pacific/Bougainville, Australia/Tasmania, Asia/Srednekolymsk, Australia/Currie, Pacific/Pohnpei, Australia/Melbourne , 太平洋/努美阿, 澳大利亚/霍巴特, 太平洋/波纳佩, 太平洋/瓜达尔卡纳尔, 澳大利亚/ACT, 澳大利亚/堪培拉, 澳大利亚/新南威尔士州, 太平洋/科斯雷,Asia/Sakhalin], +10:30=[Australia/Adelaide, Australia/South, Australia/Broken_Hill, Australia/Yancowinna], +10:00=[Pacific/Port_Moresby, Asia/Vladivostok, Pacific/Saipan, Asia/Ust- Nera, Antarctica/DumontDUrville, Etc/GMT-10, Pacific/Truk, Australia/Lindeman, Pacific/Chuuk, Australia/Brisbane, Pacific/Guam, Pacific/Yap, Australia/Queensland], +09:30=[Australia/North , Australia/Darwin], +09:00=[Asia/Pyongyang, Asia/Yakutsk, Asia/Tokyo, Asia/Jayapura, Asia/Dili, Japan, Asia/Khandyga, Pacific/Palau, Etc/GMT-9, Asia/赤塔, 韩国, Asia/Seoul], +08:45=[Australia/Eucla], +08:00=[PRC, Singapore, Hongkong, Asia/Taipei, Asia/Hong_Kong, Asia/Ulan_Bator, Asia/Manila, Asia/ Ujung_Pandang, Asia/Irkutsk, Asia/Harbin, Asia/Kuching, Asia/Chongqing, Australia/Perth, Asia/Ulaanbaatar, Asia/Kuala_Lumpur, Asia/Chungking, Asia/Macao, Asia/Shanghai, Antarctica/Cas​​ey,Asia/Brunei, Asia/Macau, Asia/Choibalsan, Australia/West, Asia/Singapore, Etc/GMT-8, Asia/Makassar], +07:00=[Asia/Vientiane, Asia/Ho_Chi_Minh, Asia/Tomsk, Asia /金边,亚洲/雅加达,亚洲/Hovd,亚洲/巴尔瑙尔,亚洲/克拉斯诺亚尔斯克,亚洲/坤甸,亚洲/曼谷,亚洲/西贡,亚洲/新西伯利亚,亚洲/新库兹涅茨克,印度/圣诞节,等/GMT-7,南极洲/戴维斯],+06:30=[亚洲/仰光,印度/科科斯,亚洲/仰光],+06:00=[亚洲/达卡,亚洲/廷布,亚洲/鄂木斯克,亚洲/昆士兰,亚洲/阿拉木图,亚洲/Dhaka, Indian/Chagos, Asia/Kashgar, Asia/Urumqi, Antarctica/Vostok, Asia/Bishkek, Asia/Thimphu, Etc/GMT-6], +05:45=[Asia/Katmandu, Asia/Kathmandu], + 05:30=[亚洲/加尔各答,亚洲/加尔各答,亚洲/科伦坡],+05:00=[亚洲/阿克托比,亚洲/撒马尔罕,印度/凯尔盖伦,亚洲/奥拉尔,亚洲/阿什哈巴德,亚洲/杜尚别,亚洲/阿克套,亚洲/阿什哈巴德,亚洲/塔什干,南极洲/莫森,亚洲/卡拉奇,等/GMT-5,亚洲/叶卡捷琳堡,亚洲/阿特劳,印度/马尔代夫,亚洲/Qyzylorda],+04:30=[亚洲/喀布尔],+04:00=[印度/马埃,印度/毛里求斯,印度/ Reunion, Europe/Astrakhan, Asia/Yerevan, Europe/Ulyanovsk, Asia/Dubai, Asia/Muscat, Asia/Tbilisi, Europe/Saratov, Europe/Samara, Europe/Volgograd, Etc/GMT-4, Asia/Baku], + 03:30=[亚洲/德黑兰、伊朗]、+03:00=[亚洲/亚丁、亚洲/卡塔尔、非洲/内罗毕、南极洲/Syowa、亚洲/利雅得、非洲/朱巴、欧洲/莫斯科、亚洲/巴林、非洲/摩加迪沙, Africa/Dar_es_Salaam, Asia/Baghdad, Asia/Kuwait, Africa/Addis_Ababa, Asia/Istanbul, Africa/Djibouti, Europe/Kirov, Africa/Asmara, Africa/Asmera, Europe/Simferopol, Indian/Antananarivo, Africa/ Kampala, Indian/Mayotte, W-SU, Turkey, Europe/Istanbul, Etc/GMT-3, Indian/Comoro, Europe/Minsk], +02:00=[Europe/Kiev, Asia/Hebron, Europe/Zaporozhye, Egypt , 亚洲/尼科西亚, 非洲/卢萨卡,欧洲/加里宁格勒,非洲/哈博罗内,非洲/马普托,利比亚,非洲/开罗,非洲/温得和克,欧洲/玛丽港,非洲/姆巴巴内,欧洲/维尔纽斯,亚洲/加沙,欧洲/基希讷乌,亚洲/法马古斯塔,非洲/马塞卢,亚洲/安曼,非洲/卢本巴希,欧洲/布加勒斯特,欧洲/乌日哥罗德,欧洲/赫尔辛基,亚洲/贝鲁特,亚洲/特拉维夫,非洲/哈拉雷,非洲/基加利,欧洲/索非亚,欧洲/塔林,非洲/喀土穆,欧洲/ Tiraspol, EET, Africa/Johannesburg, Europe/Nicosia, Asia/Damascus, Asia/Jerusalem, Africa/Bujumbura, Europe/Athens, Etc/GMT-2, Africa/Tripoli, Israel, Africa/Blantyre, Europe/Riga], + 01:00=[欧洲/卢布尔雅那,非洲/利伯维尔,欧洲/柏林,非洲/El_Aaiun,欧洲/奥斯陆,欧洲/斯德哥尔摩,欧洲/布达佩斯,欧洲/布拉迪斯拉发,欧洲/圣马力诺,欧洲/萨格勒布,欧洲/哥本哈根,欧洲/马耳他,欧洲/布鲁塞尔,欧洲/维也纳,非洲/杜阿拉,欧洲/布辛根,Europe/Warsaw, CET, Etc/GMT-1, Africa/Malabo, Europe/Skopje, Europe/Podgorica, Europe/Paris, Africa/Ndjamena, Europe/Sarajevo, Europe/Tirane, Europe/Luxembourg, Africa/Bangui, Europe/贝尔格莱德,大都会,北极/朗伊尔城,非洲/卡萨布兰卡,非洲/拉各斯,欧洲/罗马,非洲/布拉柴维尔,非洲/波多诺伏,非洲/罗安达,大西洋/Jan_Mayen,非洲/休达,非洲/阿尔及尔,欧洲/苏黎世,欧洲/阿姆斯特丹、波兰、欧洲/梵蒂冈、欧洲/直布罗陀、非洲/金沙萨、欧洲/马德里、欧洲/瓦杜兹、非洲/尼亚美、欧洲/布拉格、非洲/突尼斯、欧洲/安道尔、欧洲/摩纳哥]、Z=[ UTC、UCT、葡萄牙、祖鲁、冰岛、非洲/瓦加杜古、欧洲/里斯本、等/环球、欧洲/伦敦、大西洋/法罗、等/格林威治标准时间、非洲/达喀尔、大西洋/加那利、环球、非洲/洛美、非洲/弗里敦、格林威治标准时间、非洲/圣多美、格林威治等/GMT-0、欧洲/泽西岛、GB-Eire、非洲/比绍、欧洲/贝尔法斯特、非洲/阿比让、大西洋/雷克雅未克、WET、非洲/蒙罗维亚、大西洋/圣赫勒拿、等/格林威治、等/GMT0、非洲/巴马科、爱尔兰、欧洲/根西岛、大西洋/马德拉、非洲/廷巴克图、GB、 Africa/Accra, Africa/Conakry, Atlantic/Faroe, Etc/UTC, Etc/UCT, GMT0, Europe/Dublin, Etc/Zulu, Europe/Isle_of_Man, Africa/Nouakchott, Antarctica/Troll, Etc/GMT+0, Africa/ Banjul, America/Danmarkshavn], -01:00=[America/Scoresbysund, Atlantic/Cape_Verde, Atlantic/Azores, Etc/GMT+1], -02:00=[Atlantic/South_Georgia, Brazil/DeNoronha, Etc/GMT+ 2, America/Noronha], -03:00=[America/Argentina/San_Juan, America/Cordoba, America/Sao_Paulo, America/Argentina/Ushuaia, America/Mendoza, America/Santarem, America/Asuncion, America/Belem, America /Montevideo, America/Argentina/ComodRivadavia, America/Jujuy, America/Fortaleza, Brazil/East, America/Argentina/La_Rioja,美国/累西腓, 美国/布宜诺斯艾利斯, 南极洲/帕尔默, 美国/巴伊亚, 美国/阿根廷/胡胡伊, 美国/马塞约, 美国/阿根廷/图库曼, 美国/阿根廷/科尔多瓦, 美国/帕拉马里博, 美国/阿根廷/门多萨, 美国/ Punta_Arenas, America/Araguaina, America/Argentina/Rio_Gallegos, America/Cayenne, Chile/Continental, Antarctica/Rothera, America/Argentina/Buenos_Aires, America/Catamarca, America/Godthab, America/Argentina/Salta, Etc/GMT+3, America/Miquelon, Atlantic/Stanley, America/Argentina/San_Luis, America/Rosario, America/Argentina/Catamarca, America/Santiago], -03:30=[America/St_Johns, Canada/Newfoundland], -04:00=[ America/Caracas, America/Cuiaba, America/Dominica, America/Guadeloupe, America/Thule, America/St_Barthelemy, America/Curacao, America/La_Paz, America/Marigot, America/Moncton, America/Blanc-Sablon, Canada/Atlantic,America/Guyana, America/Martinique, America/Campo_Grande, Brazil/West, America/St_Thomas, Atlantic/Bermuda, America/Boa_Vista, America/Anguilla, America/St_Vincent, America/Aruba, America/Puerto_Rico, America/Grenada, America/ Tortola, America/Goose_Bay, America/Virgin, America/Porto_Velho, SystemV/AST4ADT, America/Manaus, America/St_Lucia, America/Port_of_Spain, America/Montserrat, America/Barbados, America/Halifax, America/Kralendijk, America/Antigua, America/Santo_Domingo, America/Lower_Princes, America/St_Kitts, Etc/GMT+4, SystemV/AST4, America/Glace_Bay], -05:00=[America/Indianapolis, Canada/Eastern, America/Iqaluit, America/Port-au -Prince, America/Nipigon, America/Indiana/Vevay, America/Indiana/Winamac, America/Guayaquil, America/Fort_Wayne, Brazil/Acre, EST5EDT, America/Kentucky/Monticello, America/Coral_Harbour, US/East-Indiana,America/Cayman, America/Cancun, America/Panama, Pacific/Easter, America/Thunder_Bay, America/Grand_Turk, America/Lima, America/Kentucky/Louisville, America/Bogota, America/Pangnirtung, America/Havana, America/New_York, America/Indiana/Petersburg, America/Toronto, America/Porto_Acre, America/Indiana/Marengo, US/Michigan, Cuba, SystemV/EST5, SystemV/EST5EDT, America/Indiana/Vincennes, Chile/EasterIsland, America/Nassau, America/ Indiana/Indianapolis, America/Jamaica, America/Eirunepe, America/Louisville, America/Atikokan, US/Eastern, America/Montreal, America/Rio_Branco, Jamaica, Etc/GMT+5, America/Detroit], -06:00= [美洲/马塔莫罗斯,美洲/里贾纳,美洲/萨尔瓦多,美洲/North_Dakota/New_Salem,美洲/哥斯达黎加,美洲/North_Dakota/Center,美洲/危地马拉,美洲/温尼伯,美洲/Rankin_Inlet,美洲/印第安纳/诺克斯,美洲/伯利兹,SystemV/CST6CDT, 墨西哥/通用, America/North_Dakota/Beulah, CST6CDT, America/Swift_Current, America/Knox_IN, America/Indiana/Tell_City, America/Menominee, America/Bahia_Banderas, America/Managua, America/Resolute, US/Central, US/Indiana-Starke, America/Monterrey, America/Chicago, Pacific/Galapagos, America/Merida, America/Mexico_City, Canada/Central, America/Tegucigalpa, America/Rainy_River, Canada/Saskatchewan, Etc/GMT+6, SystemV/ CST6], -07:00=[America/Inuvik, America/Yellowknife, US/Arizona, Mexico/BajaSur, Canada/Mountain, America/Cambridge_Bay, Navajo, America/Boise, America/Chihuahua, America/Ojinaga, SystemV/MST7MDT , MST7MDT, America/Creston, America/Phoenix, America/Dawson_Creek, America/Mazatlan, America/Shiprock, America/Denver, US/Mountain, America/Edmonton, America/Hermosillo, SystemV/MST7, Etc/GMT+7, America /Fort_Nelson],-08:00=[US/Pacific-New, Etc/GMT+8, America/Tijuana, SystemV/PST8, SystemV/PST8PDT, America/Santa_Isabel, Canada/Yukon, Canada/Pacific, America/Los_Angeles, America/Whitehorse, America/Ensenada , Pacific/Pitcairn, America/Dawson, PST8PDT, America/Vancouver, US/Pacific, Mexico/BajaNorte], -09:00=[America/Anchorage, Etc/GMT+9, America/Yakutat, America/Sitka, America/ Metlakatla, America/Juneau, SystemV/YST9, SystemV/YST9YDT, US/Alaska, America/Nome, Pacific/Gambier], -09:30=[Pacific/Marquesas], -10:00=[America/Adak, US/ Aleutian, Pacific/Honolulu, Pacific/Rarotonga, America/Atka, Etc/GMT+10, Pacific/Tahiti, US/夏威夷, Pacific/Johnston, SystemV/HST10], -11:00=[Pacific/Pago_Pago, Pacific/Midway , 太平洋/纽埃, 太平洋/萨摩亚, Etc/GMT+11, US/Samoa], -12:00=[Etc/GMT+12]}加拿大/育空、加拿大/太平洋、美洲/洛杉矶、美洲/怀特霍斯、美洲/恩塞纳达、太平洋/皮特凯恩、美洲/道森、PST8PDT、美洲/温哥华、美国/太平洋、墨西哥/北巴哈],-09:00=[美洲/Anchorage, Etc/GMT+9, America/Yakutat, America/Sitka, America/Metlakatla, America/Juneau, SystemV/YST9, SystemV/YST9YDT, US/Alaska, America/Nome, Pacific/Gambier], -09:30 =[太平洋/马克萨斯],-10:00=[美洲/阿达克,美国/阿留申,太平洋/檀香山,太平洋/拉罗汤加,美洲/阿特卡,等/GMT+10,太平洋/大溪地,美国/夏威夷,太平洋/约翰斯顿, SystemV/HST10], -11:00=[Pacific/Pago_Pago, Pacific/Midway, Pacific/Niue, Pacific/Samoa, Etc/GMT+11, US/Samoa], -12:00=[Etc/GMT+12 ]}加拿大/育空、加拿大/太平洋、美洲/洛杉矶、美洲/怀特霍斯、美洲/恩塞纳达、太平洋/皮特凯恩、美洲/道森、PST8PDT、美洲/温哥华、美国/太平洋、墨西哥/北巴哈],-09:00=[美洲/Anchorage, Etc/GMT+9, America/Yakutat, America/Sitka, America/Metlakatla, America/Juneau, SystemV/YST9, SystemV/YST9YDT, US/Alaska, America/Nome, Pacific/Gambier], -09:30 =[太平洋/马克萨斯],-10:00=[美洲/阿达克,美国/阿留申,太平洋/檀香山,太平洋/拉罗汤加,美洲/阿特卡,等/GMT+10,太平洋/大溪地,美国/夏威夷,太平洋/约翰斯顿, SystemV/HST10], -11:00=[Pacific/Pago_Pago, Pacific/Midway, Pacific/Niue, Pacific/Samoa, Etc/GMT+11, US/Samoa], -12:00=[Etc/GMT+12 ]}00=[America/Anchorage, Etc/GMT+9, America/Yakutat, America/Sitka, America/Metlakatla, America/Juneau, SystemV/YST9, SystemV/YST9YDT, US/Alaska, America/Nome, Pacific/Gambier], -09:30=[太平洋/马克萨斯],-10:00=[美国/阿达克、美国/阿留申、太平洋/檀香山、太平洋/拉罗汤加、美国/阿特卡等/GMT+10、太平洋/大溪地、美国/夏威夷, Pacific/Johnston, SystemV/HST10], -11:00=[Pacific/Pago_Pago, Pacific/Midway, Pacific/Niue, Pacific/Samoa, Etc/GMT+11, US/Samoa], -12:00=[Etc /GMT+12]}00=[America/Anchorage, Etc/GMT+9, America/Yakutat, America/Sitka, America/Metlakatla, America/Juneau, SystemV/YST9, SystemV/YST9YDT, US/Alaska, America/Nome, Pacific/Gambier], -09:30=[太平洋/马克萨斯],-10:00=[美国/阿达克、美国/阿留申、太平洋/檀香山、太平洋/拉罗汤加、美国/阿特卡等/GMT+10、太平洋/大溪地、美国/夏威夷, Pacific/Johnston, SystemV/HST10], -11:00=[Pacific/Pago_Pago, Pacific/Midway, Pacific/Niue, Pacific/Samoa, Etc/GMT+11, US/Samoa], -12:00=[Etc /GMT+12]}太平洋/中途岛、太平洋/纽埃、太平洋/萨摩亚、等/GMT+11、美国/萨摩亚]、-12:00=[等/GMT+12]}太平洋/中途岛、太平洋/纽埃、太平洋/萨摩亚、等/GMT+11、美国/萨摩亚]、-12:00=[等/GMT+12]}

让我们看一下+10:00我们展示的 UTC ( ) 前十小时的示例:

10:00=[太平洋/莫尔兹比港,亚洲/符拉迪沃斯托克,太平洋/塞班岛,亚洲/乌斯季尼拉,南极洲/杜蒙杜尔维尔,等/GMT-10,太平洋/特鲁克,澳大利亚/林德曼,太平洋/丘克,澳大利亚/布里斯班,太平洋/关岛,太平洋/雅浦,澳大利亚/昆士兰],+09:30=[澳大利亚/北部,澳大利亚/达尔文]

哎呀!没有Australia/Sydney。看看比 UTC 早 11 小时,+11:00.

+11:00=[澳大利亚/悉尼、太平洋/埃法特、澳大利亚/LHI、亚洲/马加丹、太平洋/诺福克、南极洲/麦格理、澳大利亚/Lord_Howe、澳大利亚/维多利亚等/GMT-11、太平洋/布干维尔、澳大利亚/塔斯马尼亚,亚洲/斯雷德内科雷姆斯克,澳大利亚/居里,太平洋/波纳佩,澳大利亚/墨尔本,太平洋/努美阿,澳大利亚/霍巴特,太平洋/波纳佩,太平洋/瓜达尔卡纳尔,澳大利亚/首都领地,澳大利亚/堪培拉,澳大利亚/新南威尔士州,太平洋/科斯雷,亚洲/萨哈林]

答对了!在 2020-01-28T00:11:55.484156Z 的那一刻,Australia/Sydney正在使用比 UTC 提前十一 (11) 小时而不是十 (10) 小时的偏移量。如上所述,偏移量随时间每个时区而变化。因此,如果没有片刻的上下文,请求偏移到区域的映射是没有意义的。

于 2020-01-27T23:53:29.563 回答