| /* |
| ******************************************************************************** |
| * * |
| * COPYRIGHT: * |
| * (C) Copyright Taligent, Inc., 1997 * |
| * (C) Copyright International Business Machines Corporation, 1997-1998 * |
| * Licensed Material - Program-Property of IBM - All Rights Reserved. * |
| * US Government Users Restricted Rights - Use, duplication, or disclosure * |
| * restricted by GSA ADP Schedule Contract with IBM Corp. * |
| * * |
| ******************************************************************************** |
| * |
| * File TIMEZONE.CPP |
| * |
| * Modification History: |
| * |
| * Date Name Description |
| * 12/05/96 clhuang Creation. |
| * 04/21/97 aliu General clean-up and bug fixing. |
| * 05/08/97 aliu Fixed Hashtable code per code review. |
| * 07/09/97 helena Changed createInstance to createDefault. |
| * 07/29/97 aliu Updated with all-new list of 96 UNIX-derived |
| * TimeZones. Changed mechanism to load from static |
| * array rather than resource bundle. |
| * 07/07/1998 srl Bugfixes from the Java side: UTC GMT CAT NST |
| * Added getDisplayName API |
| * going to add custom parsing. |
| * |
| * ISSUES: |
| * - should getDisplayName cache something? |
| * - should custom time zones be cached? [probably] |
| * 08/10/98 stephen Brought getDisplayName() API in-line w/ conventions |
| * 08/19/98 stephen Changed createTimeZone() to never return 0 |
| * 09/02/98 stephen Added getOffset(monthLen) and hasSameRules() |
| * 09/15/98 stephen Added getStaticClassID() |
| * 02/22/99 stephen Removed character literals for EBCDIC safety |
| * 05/04/99 stephen Changed initDefault() for Mutex issues |
| * 07/12/99 helena HPUX 11 CC Port. |
| *********************************************************************************/ |
| |
| #include "uhash.h" |
| #include "simpletz.h" |
| #include "smpdtfmt.h" |
| #include "calendar.h" |
| #include "mutex.h" |
| |
| #ifdef _DEBUG |
| #include "unistrm.h" |
| #endif |
| |
| // static initialization |
| char TimeZone::fgClassID = 0; // Value is irrelevant |
| |
| TimeZone* TimeZone::fgDefaultZone = NULL; |
| UHashtable* TimeZone::fgHashtable = NULL; |
| |
| /** |
| * Delete the given object, assuming it is a TimeZone. Used by Hashtable. |
| */ |
| void |
| TimeZone::deleteTimeZone(void* obj) |
| { |
| delete (TimeZone*)obj; |
| } |
| |
| // ResourceBundle file, locale, and resource name |
| //const char* TimeZone::kTimeZoneResource = "timezone"; |
| |
| // There MUST be a TimeZone with this ID within kSystemTimeZones |
| UnicodeString TimeZone::kLastResortID("Africa/Casablanca"); // GMT |
| //const int32_t TimeZone::kLastResortOffset = 0; |
| |
| // Array of UnicodeString objects for available IDs |
| UnicodeString* TimeZone::fgAvailableIDs = 0; |
| int32_t TimeZone::fgAvailableIDsCount = 0; |
| |
| const int32_t TimeZone::millisPerHour = kMillisPerHour; |
| |
| const UnicodeString TimeZone::GMT_ID = "GMT"; |
| const int32_t TimeZone::GMT_ID_LENGTH = 3; |
| const UnicodeString TimeZone::CUSTOM_ID = "Custom"; |
| |
| const TimeZone* TimeZone::GMT = new SimpleTimeZone(0, GMT_ID); |
| |
| UErrorCode TimeZone::fgStatus = ZERO_ERROR; |
| |
| /* Lazy evaluated. HPUX CC compiler can't handle array initialization |
| with complex objects */ |
| /*const int32_t TimeZone::kSystemTimeZonesCount = 320;*/ |
| /* {sfb} illegal to have non-const array dimension */ |
| #define kSystemTimeZonesCount 320 |
| bool_t TimeZone::kSystemInited = FALSE; |
| SimpleTimeZone* TimeZone::kSystemTimeZones[kSystemTimeZonesCount]; |
| |
| void |
| TimeZone::initSystemTimeZones(void) |
| { |
| if (kSystemInited == FALSE) { |
| kSystemInited = TRUE; |
| // Migration from Java: |
| // - replace ONE_HOUR with kMillisPerHour |
| // - replace (int) with (int32_t) |
| |
| // The following data is current as of 1998. |
| // Total Unix zones: 343 |
| // Total Java zones: 289 |
| // Not all Unix zones become Java zones due to duplication and overlap. |
| //---------------------------------------------------------- |
| |
| kSystemTimeZones[0] = |
| new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Niue" /*NUT*/); |
| // Pacific/Niue Niue(NU) -11:00 - NUT |
| //---------------------------------------------------------- |
| kSystemTimeZones[1] = |
| new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Apia" /*WST*/); |
| // Pacific/Apia W Samoa(WS) -11:00 - WST # W Samoa Time |
| kSystemTimeZones[2] = |
| new SimpleTimeZone(-11*kMillisPerHour, "MIT" /*alias for Pacific/Apia*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[3] = |
| new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Pago_Pago" /*SST*/); |
| // Pacific/Pago_Pago American Samoa(US) -11:00 - SST # S=Samoa |
| //---------------------------------------------------------- |
| kSystemTimeZones[4] = |
| new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Tahiti" /*TAHT*/); |
| // Pacific/Tahiti French Polynesia(PF) -10:00 - TAHT # Tahiti Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[5] = |
| new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Fakaofo" /*TKT*/); |
| // Pacific/Fakaofo Tokelau Is(TK) -10:00 - TKT # Tokelau Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[6] = |
| new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Honolulu" /*HST*/); |
| // Pacific/Honolulu Hawaii(US) -10:00 - HST |
| kSystemTimeZones[7] = |
| new SimpleTimeZone(-10*kMillisPerHour, "HST" /*alias for Pacific/Honolulu*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[8] = |
| new SimpleTimeZone(-10*kMillisPerHour, "America/Adak" /*HA%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour, fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Adak Alaska(US) -10:00 US HA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[9] = |
| new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Rarotonga" /*CK%sT*/, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::MARCH, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, (int32_t)(0.5*kMillisPerHour), fgStatus); |
| // Rule Cook 1979 max - Mar Sun>=1 0:00 0 - |
| // Rule Cook 1979 max - Oct lastSun 0:00 0:30 HS |
| // Pacific/Rarotonga Cook Is(CK) -10:00 Cook CK%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[10] = |
| new SimpleTimeZone((int32_t)(-9.5*kMillisPerHour), "Pacific/Marquesas" /*MART*/); |
| // Pacific/Marquesas French Polynesia(PF) -9:30 - MART # Marquesas Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[11] = |
| new SimpleTimeZone(-9*kMillisPerHour, "Pacific/Gambier" /*GAMT*/); |
| // Pacific/Gambier French Polynesia(PF) -9:00 - GAMT # Gambier Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[12] = |
| new SimpleTimeZone(-9*kMillisPerHour, "America/Anchorage" /*AK%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Anchorage Alaska(US) -9:00 US AK%sT |
| kSystemTimeZones[13] = |
| new SimpleTimeZone(-9*kMillisPerHour, "AST" /*alias for America/Anchorage*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[14] = |
| new SimpleTimeZone((int32_t)(-8.5*kMillisPerHour), "Pacific/Pitcairn" /*PNT*/); |
| // Pacific/Pitcairn Pitcairn(PN) -8:30 - PNT # Pitcairn Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[15] = |
| new SimpleTimeZone(-8*kMillisPerHour, "America/Vancouver" /*P%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Vanc 1962 max - Oct lastSun 2:00 0 S |
| // Rule Vanc 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Vancouver British Columbia(CA) -8:00 Vanc P%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[16] = |
| new SimpleTimeZone(-8*kMillisPerHour, "America/Tijuana" /*P%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D |
| // Rule Mexico 1996 max - Oct lastSun 2:00 0 S |
| // America/Tijuana Mexico(MX) -8:00 Mexico P%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[17] = |
| new SimpleTimeZone(-8*kMillisPerHour, "America/Los_Angeles" /*P%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Los_Angeles US Pacific time, represented by Los Angeles(US) -8:00 US P%sT |
| kSystemTimeZones[18] = |
| new SimpleTimeZone(-8*kMillisPerHour, "PST" /*alias for America/Los_Angeles*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[19] = |
| new SimpleTimeZone(-7*kMillisPerHour, "America/Dawson_Creek" /*MST*/); |
| // America/Dawson_Creek British Columbia(CA) -7:00 - MST |
| //---------------------------------------------------------- |
| kSystemTimeZones[20] = |
| new SimpleTimeZone(-7*kMillisPerHour, "America/Phoenix" /*MST*/); |
| // America/Phoenix ?(US) -7:00 - MST |
| kSystemTimeZones[21] = |
| new SimpleTimeZone(-7*kMillisPerHour, "America/Edmonton" /*M%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Edm 1972 max - Oct lastSun 2:00 0 S |
| // Rule Edm 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Edmonton Alberta(CA) -7:00 Edm M%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[22] = |
| new SimpleTimeZone(-7*kMillisPerHour, "America/Mazatlan" /*M%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D |
| // Rule Mexico 1996 max - Oct lastSun 2:00 0 S |
| // America/Mazatlan Mexico(MX) -7:00 Mexico M%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[23] = |
| new SimpleTimeZone(-7*kMillisPerHour, "America/Denver" /*M%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Denver US Mountain time, represented by Denver(US) -7:00 US M%sT |
| kSystemTimeZones[24] = |
| new SimpleTimeZone(-7*kMillisPerHour, "MST" /*alias for America/Denver*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[25] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Belize" /*C%sT*/); |
| // America/Belize Belize(BZ) -6:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[26] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Regina" /*CST*/); |
| // America/Regina Saskatchewan(CA) -6:00 - CST |
| //---------------------------------------------------------- |
| kSystemTimeZones[27] = |
| new SimpleTimeZone(-6*kMillisPerHour, "Pacific/Galapagos" /*GALT*/); |
| // Pacific/Galapagos Ecuador(EC) -6:00 - GALT # Galapagos Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[28] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Guatemala" /*C%sT*/); |
| // America/Guatemala Guatemala(GT) -6:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[29] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Tegucigalpa" /*C%sT*/); |
| // America/Tegucigalpa Honduras(HN) -6:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[30] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/El_Salvador" /*C%sT*/); |
| // America/El_Salvador El Salvador(SV) -6:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[31] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Costa_Rica" /*C%sT*/); |
| // America/Costa_Rica Costa Rica(CR) -6:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[32] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Winnipeg" /*C%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Winn 1966 max - Oct lastSun 2:00 0 S |
| // Rule Winn 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Winnipeg Manitoba(CA) -6:00 Winn C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[33] = |
| new SimpleTimeZone(-6*kMillisPerHour, "Pacific/Easter" /*EAS%sT*/, |
| Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S |
| // Rule Chile 1970 max - Mar Sun>=9 0:00 0 - |
| // Pacific/Easter Chile(CL) -6:00 Chile EAS%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[34] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Mexico_City" /*C%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D |
| // Rule Mexico 1996 max - Oct lastSun 2:00 0 S |
| // America/Mexico_City Mexico(MX) -6:00 Mexico C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[35] = |
| new SimpleTimeZone(-6*kMillisPerHour, "America/Chicago" /*C%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Chicago US Central time, represented by Chicago(US) -6:00 US C%sT |
| kSystemTimeZones[36] = |
| new SimpleTimeZone(-6*kMillisPerHour, "CST" /*alias for America/Chicago*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[37] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Porto_Acre" /*AST*/); |
| // America/Porto_Acre Brazil(BR) -5:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[38] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Bogota" /*CO%sT*/); |
| // America/Bogota Colombia(CO) -5:00 - CO%sT # Colombia Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[39] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Guayaquil" /*ECT*/); |
| // America/Guayaquil Ecuador(EC) -5:00 - ECT # Ecuador Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[40] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Jamaica" /*EST*/); |
| // America/Jamaica Jamaica(JM) -5:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[41] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Cayman" /*EST*/); |
| // America/Cayman Cayman Is(KY) -5:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[42] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Managua" /*EST*/); |
| // America/Managua Nicaragua(NI) -5:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[43] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Panama" /*EST*/); |
| // America/Panama Panama(PA) -5:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[44] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Lima" /*PE%sT*/); |
| // America/Lima Peru(PE) -5:00 - PE%sT # Peru Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[45] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Indianapolis" /*EST*/); |
| // America/Indianapolis Indiana(US) -5:00 - EST |
| kSystemTimeZones[46] = |
| new SimpleTimeZone(-5*kMillisPerHour, "IET" /*alias for America/Indianapolis*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[47] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Nassau" /*E%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Bahamas 1964 max - Oct lastSun 2:00 0 S |
| // Rule Bahamas 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Nassau Bahamas(BS) -5:00 Bahamas E%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[48] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Montreal" /*E%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mont 1957 max - Oct lastSun 2:00 0 S |
| // Rule Mont 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Montreal Ontario, Quebec(CA) -5:00 Mont E%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[49] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Havana" /*C%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, 8, -Calendar::SUNDAY /*DOW>=DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Cuba 1990 max - Apr Sun>=1 0:00 1:00 D |
| // Rule Cuba 1997 max - Oct Sun>=8 0:00s 0 S |
| // America/Havana Cuba(CU) -5:00 Cuba C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[50] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Port-au-Prince" /*E%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Haiti 1988 max - Apr Sun>=1 1:00s 1:00 D |
| // Rule Haiti 1988 max - Oct lastSun 1:00s 0 S |
| // America/Port-au-Prince Haiti(HT) -5:00 Haiti E%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[51] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/Grand_Turk" /*E%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule TC 1979 max - Oct lastSun 0:00 0 S |
| // Rule TC 1987 max - Apr Sun>=1 0:00 1:00 D |
| // America/Grand_Turk Turks and Caicos(TC) -5:00 TC E%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[52] = |
| new SimpleTimeZone(-5*kMillisPerHour, "America/New_York" /*E%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule US 1967 max - Oct lastSun 2:00 0 S |
| // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/New_York US Eastern time, represented by New York(US) -5:00 US E%sT |
| kSystemTimeZones[53] = |
| new SimpleTimeZone(-5*kMillisPerHour, "EST" /*alias for America/New_York*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[54] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Antigua" /*AST*/); |
| // America/Antigua Antigua and Barbuda(AG) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[55] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Anguilla" /*AST*/); |
| // America/Anguilla Anguilla(AI) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[56] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Curacao" /*AST*/); |
| // America/Curacao Curacao(AN) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[57] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Aruba" /*AST*/); |
| // America/Aruba Aruba(AW) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[58] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Barbados" /*A%sT*/); |
| // America/Barbados Barbados(BB) -4:00 - A%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[59] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/La_Paz" /*BOT*/); |
| // America/La_Paz Bolivia(BO) -4:00 - BOT # Bolivia Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[60] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Manaus" /*WST*/); |
| // America/Manaus Brazil(BR) -4:00 - WST |
| //---------------------------------------------------------- |
| kSystemTimeZones[61] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Dominica" /*AST*/); |
| // America/Dominica Dominica(DM) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[62] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Santo_Domingo" /*AST*/); |
| // America/Santo_Domingo Dominican Republic(DO) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[63] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Grenada" /*AST*/); |
| // America/Grenada Grenada(GD) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[64] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Guadeloupe" /*AST*/); |
| // America/Guadeloupe Guadeloupe(GP) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[65] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Guyana" /*GYT*/); |
| // America/Guyana Guyana(GY) -4:00 - GYT |
| //---------------------------------------------------------- |
| kSystemTimeZones[66] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/St_Kitts" /*AST*/); |
| // America/St_Kitts St Kitts-Nevis(KN) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[67] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/St_Lucia" /*AST*/); |
| // America/St_Lucia St Lucia(LC) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[68] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Martinique" /*AST*/); |
| // America/Martinique Martinique(MQ) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[69] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Montserrat" /*AST*/); |
| // America/Montserrat Montserrat(MS) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[70] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Puerto_Rico" /*AST*/); |
| // America/Puerto_Rico Puerto Rico(PR) -4:00 - AST |
| kSystemTimeZones[71] = |
| new SimpleTimeZone(-4*kMillisPerHour, "PRT" /*alias for America/Puerto_Rico*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[72] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Port_of_Spain" /*AST*/); |
| // America/Port_of_Spain Trinidad and Tobago(TT) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[73] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/St_Vincent" /*AST*/); |
| // America/St_Vincent St Vincent and the Grenadines(VC) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[74] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Tortola" /*AST*/); |
| // America/Tortola British Virgin Is(VG) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[75] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/St_Thomas" /*AST*/); |
| // America/St_Thomas Virgin Is(VI) -4:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[76] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Caracas" /*VET*/); |
| // America/Caracas Venezuela(VE) -4:00 - VET |
| //---------------------------------------------------------- |
| kSystemTimeZones[77] = |
| new SimpleTimeZone(-4*kMillisPerHour, "Antarctica/Palmer" /*CL%sT*/, |
| Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule ChileAQ 1969 max - Oct Sun>=9 0:00 1:00 S |
| // Rule ChileAQ 1970 max - Mar Sun>=9 0:00 0 - |
| // Antarctica/Palmer USA - year-round bases(AQ) -4:00 ChileAQ CL%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[78] = |
| new SimpleTimeZone(-4*kMillisPerHour, "Atlantic/Bermuda" /*A%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Bahamas 1964 max - Oct lastSun 2:00 0 S |
| // Rule Bahamas 1987 max - Apr Sun>=1 2:00 1:00 D |
| // Atlantic/Bermuda Bermuda(BM) -4:00 Bahamas A%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[79] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Cuiaba" /*W%sT*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Brazil 1998 max - Oct Sun>=1 0:00 1:00 D |
| // Rule Brazil 1999 max - Feb Sun>=11 0:00 0 S |
| // America/Cuiaba Brazil(BR) -4:00 Brazil W%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[80] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Halifax" /*A%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Halifax 1962 max - Oct lastSun 2:00 0 S |
| // Rule Halifax 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Halifax ?(CA) -4:00 Halifax A%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[81] = |
| new SimpleTimeZone(-4*kMillisPerHour, "Atlantic/Stanley" /*FK%sT*/, |
| Calendar::SEPTEMBER, 8, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::APRIL, 16, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Falk 1986 max - Apr Sun>=16 0:00 0 - |
| // Rule Falk 1996 max - Sep Sun>=8 0:00 1:00 S |
| // Atlantic/Stanley Falklands(FK) -4:00 Falk FK%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[82] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Thule" /*A%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Thule 1993 max - Apr Sun>=1 2:00 1:00 D |
| // Rule Thule 1993 max - Oct lastSun 2:00 0 S |
| // America/Thule ?(GL) -4:00 Thule A%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[83] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Asuncion" /*PY%sT*/, |
| Calendar::OCTOBER, 1, 0 /*DOM*/, 0*kMillisPerHour, |
| Calendar::MARCH, 1, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Para 1996 max - Mar 1 0:00 0 - |
| // Rule Para 1997 max - Oct 1 0:00 1:00 S |
| // America/Asuncion Paraguay(PY) -4:00 Para PY%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[84] = |
| new SimpleTimeZone(-4*kMillisPerHour, "America/Santiago" /*CL%sT*/, |
| Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S |
| // Rule Chile 1970 max - Mar Sun>=9 0:00 0 - |
| // America/Santiago Chile(CL) -4:00 Chile CL%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[85] = |
| new SimpleTimeZone((int32_t)(-3.5*kMillisPerHour), "America/St_Johns" /*N%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule StJohns 1960 max - Oct lastSun 2:00 0 S |
| // Rule StJohns 1989 max - Apr Sun>=1 2:00 1:00 D |
| // America/St_Johns Canada(CA) -3:30 StJohns N%sT |
| kSystemTimeZones[86] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Fortaleza" /*EST*/); |
| // America/Fortaleza Brazil(BR) -3:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[87] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Cayenne" /*GFT*/); |
| // America/Cayenne French Guiana(GF) -3:00 - GFT |
| //---------------------------------------------------------- |
| kSystemTimeZones[88] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Paramaribo" /*SRT*/); |
| // America/Paramaribo Suriname(SR) -3:00 - SRT |
| //---------------------------------------------------------- |
| kSystemTimeZones[89] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Montevideo" /*UY%sT*/); |
| // America/Montevideo Uruguay(UY) -3:00 - UY%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[90] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Buenos_Aires" /*AR%sT*/); |
| // America/Buenos_Aires Argentina(AR) -3:00 - AR%sT |
| kSystemTimeZones[91] = |
| new SimpleTimeZone(-3*kMillisPerHour, "AGT" /*alias for America/Buenos_Aires*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[92] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Godthab" /*WG%sT*/, |
| Calendar::MARCH, -1, Calendar::SATURDAY /*DOW_IN_DOM*/, 22*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SATURDAY /*DOW_IN_DOM*/, 22*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // America/Godthab ?(GL) -3:00 EU WG%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[93] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Miquelon" /*PM%sT*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mont 1957 max - Oct lastSun 2:00 0 S |
| // Rule Mont 1987 max - Apr Sun>=1 2:00 1:00 D |
| // America/Miquelon St Pierre and Miquelon(PM) -3:00 Mont PM%sT # Pierre & Miquelon Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[94] = |
| new SimpleTimeZone(-3*kMillisPerHour, "America/Sao_Paulo" /*E%sT*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Brazil 1998 max - Oct Sun>=1 0:00 1:00 D |
| // Rule Brazil 1999 max - Feb Sun>=11 0:00 0 S |
| // America/Sao_Paulo Brazil(BR) -3:00 Brazil E%sT |
| kSystemTimeZones[95] = |
| new SimpleTimeZone(-3*kMillisPerHour, "BET" /*alias for America/Sao_Paulo*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[96] = |
| new SimpleTimeZone(-2*kMillisPerHour, "America/Noronha" /*FST*/); |
| // America/Noronha Brazil(BR) -2:00 - FST |
| //---------------------------------------------------------- |
| kSystemTimeZones[97] = |
| new SimpleTimeZone(-2*kMillisPerHour, "Atlantic/South_Georgia" /*GST*/); |
| // Atlantic/South_Georgia South Georgia(GS) -2:00 - GST # South Georgia Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[98] = |
| new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Jan_Mayen" /*EGT*/); |
| // Atlantic/Jan_Mayen ?(NO) -1:00 - EGT |
| //---------------------------------------------------------- |
| kSystemTimeZones[99] = |
| new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Cape_Verde" /*CVT*/); |
| // Atlantic/Cape_Verde Cape Verde(CV) -1:00 - CVT |
| //---------------------------------------------------------- |
| kSystemTimeZones[100] = |
| new SimpleTimeZone(-1*kMillisPerHour, "America/Scoresbysund" /*EG%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // America/Scoresbysund ?(GL) -1:00 EU EG%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[101] = |
| new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Azores" /*AZO%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Atlantic/Azores Portugal(PT) -1:00 EU AZO%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[102] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Ouagadougou" /*GMT*/); |
| // Africa/Ouagadougou Burkina Faso(BF) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[103] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Abidjan" /*GMT*/); |
| // Africa/Abidjan Cote D'Ivoire(CI) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[104] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Accra" /*%s*/); |
| // Africa/Accra Ghana(GH) 0:00 - %s |
| //---------------------------------------------------------- |
| kSystemTimeZones[105] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Banjul" /*GMT*/); |
| // Africa/Banjul Gambia(GM) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[106] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Conakry" /*GMT*/); |
| // Africa/Conakry Guinea(GN) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[107] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Bissau" /*GMT*/); |
| // Africa/Bissau Guinea-Bissau(GW) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[108] = |
| new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Reykjavik" /*GMT*/); |
| // Atlantic/Reykjavik Iceland(IS) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[109] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Monrovia" /*GMT*/); |
| // Africa/Monrovia Liberia(LR) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[110] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Casablanca" /*WET*/); |
| // Africa/Casablanca Morocco(MA) 0:00 - WET |
| //---------------------------------------------------------- |
| kSystemTimeZones[111] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Timbuktu" /*GMT*/); |
| // Africa/Timbuktu Mali(ML) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[112] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Nouakchott" /*GMT*/); |
| // Africa/Nouakchott Mauritania(MR) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[113] = |
| new SimpleTimeZone(0*kMillisPerHour, "Atlantic/St_Helena" /*GMT*/); |
| // Atlantic/St_Helena St Helena(SH) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[114] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Freetown" /*%s*/); |
| // Africa/Freetown Sierra Leone(SL) 0:00 - %s |
| //---------------------------------------------------------- |
| kSystemTimeZones[115] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Dakar" /*GMT*/); |
| // Africa/Dakar Senegal(SN) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[116] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Sao_Tome" /*GMT*/); |
| // Africa/Sao_Tome Sao Tome and Principe(ST) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[117] = |
| new SimpleTimeZone(0*kMillisPerHour, "Africa/Lome" /*GMT*/); |
| // Africa/Lome Togo(TG) 0:00 - GMT |
| //---------------------------------------------------------- |
| kSystemTimeZones[118] = |
| new SimpleTimeZone(0*kMillisPerHour, "GMT" /*GMT*/); |
| // GMT -(-) 0:00 - GMT |
| kSystemTimeZones[119] = |
| new SimpleTimeZone(0*kMillisPerHour, "UTC" /*alias for GMT*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[120] = |
| new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Faeroe" /*WE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Atlantic/Faeroe Denmark, Faeroe Islands, and Greenland(DK) 0:00 EU WE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[121] = |
| new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Canary" /*WE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Atlantic/Canary Spain(ES) 0:00 EU WE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[122] = |
| new SimpleTimeZone(0*kMillisPerHour, "Europe/Dublin" /*GMT/IST*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Dublin ---(IE) 0:00 EU GMT/IST |
| //---------------------------------------------------------- |
| kSystemTimeZones[123] = |
| new SimpleTimeZone(0*kMillisPerHour, "Europe/Lisbon" /*WE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Lisbon Portugal(PT) 0:00 EU WE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[124] = |
| new SimpleTimeZone(0*kMillisPerHour, "Europe/London" /*GMT/BST*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/London ---(GB) 0:00 EU GMT/BST |
| //---------------------------------------------------------- |
| kSystemTimeZones[125] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Luanda" /*WAT*/); |
| // Africa/Luanda Angola(AO) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[126] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Porto-Novo" /*WAT*/); |
| // Africa/Porto-Novo Benin(BJ) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[127] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Bangui" /*WAT*/); |
| // Africa/Bangui Central African Republic(CF) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[128] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Kinshasa" /*WAT*/); |
| // Africa/Kinshasa Democratic Republic of Congo(CG) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[129] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Douala" /*WAT*/); |
| // Africa/Douala Cameroon(CM) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[130] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Libreville" /*WAT*/); |
| // Africa/Libreville Gabon(GA) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[131] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Malabo" /*WAT*/); |
| // Africa/Malabo Equatorial Guinea(GQ) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[132] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Niamey" /*WAT*/); |
| // Africa/Niamey Niger(NE) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[133] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Lagos" /*WAT*/); |
| // Africa/Lagos Nigeria(NG) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[134] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Ndjamena" /*WAT*/); |
| // Africa/Ndjamena Chad(TD) 1:00 - WAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[135] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Tunis" /*CE%sT*/); |
| // Africa/Tunis Tunisia(TN) 1:00 - CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[136] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Algiers" /*CET*/); |
| // Africa/Algiers Algeria(DZ) 1:00 - CET |
| //---------------------------------------------------------- |
| kSystemTimeZones[137] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Andorra" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Andorra Andorra(AD) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[138] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Tirane" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Tirane Albania(AL) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[139] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Vienna" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Vienna Austria(AT) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[140] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Brussels" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Brussels Belgium(BE) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[141] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Zurich" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Zurich Switzerland(CH) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[142] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Prague" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Prague Czech Republic(CZ) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[143] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Berlin" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Berlin Germany(DE) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[144] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Copenhagen" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Copenhagen Denmark, Faeroe Islands, and Greenland(DK) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[145] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Madrid" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Madrid Spain(ES) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[146] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Gibraltar" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Gibraltar Gibraltar(GI) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[147] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Budapest" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Budapest Hungary(HU) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[148] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Rome" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Rome Italy(IT) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[149] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Vaduz" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Vaduz Liechtenstein(LI) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[150] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Luxembourg" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Luxembourg Luxembourg(LU) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[151] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Tripoli" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::THURSDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, 1, -Calendar::THURSDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Libya 1997 max - Mar lastThu 2:00s 1:00 S |
| // Rule Libya 1997 max - Oct Thu>=1 2:00s 0 - |
| // Africa/Tripoli Libya(LY) 1:00 Libya CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[152] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Monaco" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Monaco Monaco(MC) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[153] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Malta" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Malta Malta(MT) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[154] = |
| new SimpleTimeZone(1*kMillisPerHour, "Africa/Windhoek" /*WA%sT*/, |
| Calendar::SEPTEMBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S |
| // Rule Namibia 1995 max - Apr Sun>=1 2:00 0 - |
| // Africa/Windhoek Namibia(NA) 1:00 Namibia WA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[155] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Amsterdam" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Amsterdam Netherlands(NL) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[156] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Oslo" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Oslo Norway(NO) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[157] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Warsaw" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S |
| // Rule W-Eur 1996 max - Oct lastSun 1:00s 0 - |
| // Europe/Warsaw Poland(PL) 1:00 W-Eur CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[158] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Stockholm" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Stockholm Sweden(SE) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[159] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Belgrade" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Belgrade Yugoslavia(YU) 1:00 EU CE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[160] = |
| new SimpleTimeZone(1*kMillisPerHour, "Europe/Paris" /*CE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Paris France(FR) 1:00 EU CE%sT |
| kSystemTimeZones[161] = |
| new SimpleTimeZone(1*kMillisPerHour, "ECT" /*alias for Europe/Paris*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[162] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Bujumbura" /*CAT*/); |
| // Africa/Bujumbura Burundi(BI) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[163] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Gaborone" /*CAT*/); |
| // Africa/Gaborone Botswana(BW) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[164] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Lubumbashi" /*CAT*/); |
| // Africa/Lubumbashi Democratic Republic of Congo(CG) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[165] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Maseru" /*SAST*/); |
| // Africa/Maseru Lesotho(LS) 2:00 - SAST |
| //---------------------------------------------------------- |
| kSystemTimeZones[166] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Blantyre" /*CAT*/); |
| // Africa/Blantyre Malawi(ML) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[167] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Maputo" /*CAT*/); |
| // Africa/Maputo Mozambique(MZ) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[168] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Kigali" /*CAT*/); |
| // Africa/Kigali Rwanda(RW) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[169] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Khartoum" /*CA%sT*/); |
| // Africa/Khartoum Sudan(SD) 2:00 - CA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[170] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Mbabane" /*SAST*/); |
| // Africa/Mbabane Swaziland(SZ) 2:00 - SAST |
| //---------------------------------------------------------- |
| kSystemTimeZones[171] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Lusaka" /*CAT*/); |
| // Africa/Lusaka Zambia(ZM) 2:00 - CAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[172] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Harare" /*CAT*/); |
| // Africa/Harare Zimbabwe(ZW) 2:00 - CAT |
| kSystemTimeZones[173] = |
| new SimpleTimeZone(2*kMillisPerHour, "CAT" /*alias for Africa/Harare*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[174] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Johannesburg" /*SAST*/); |
| // Africa/Johannesburg South Africa(ZA) 2:00 - SAST |
| //---------------------------------------------------------- |
| kSystemTimeZones[175] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Sofia" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-Eur 1996 max - Oct lastSun 0:00 0 - |
| // Europe/Sofia Bulgaria(BG) 2:00 E-Eur EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[176] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Minsk" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Minsk Belarus(BY) 2:00 Russia EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[177] = |
| new SimpleTimeZone(2*kMillisPerHour, "Asia/Nicosia" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Cyprus 1979 max - Sep lastSun 0:00 0 - |
| // Rule Cyprus 1981 max - Mar lastSun 0:00 1:00 S |
| // Asia/Nicosia Cyprus(CY) 2:00 Cyprus EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[178] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Tallinn" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S |
| // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Tallinn Estonia(EE) 2:00 C-Eur EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[179] = |
| new SimpleTimeZone(2*kMillisPerHour, "Africa/Cairo" /*EE%sT*/, |
| Calendar::APRIL, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Egypt 1995 max - Apr lastFri 1:00 1:00 S |
| // Rule Egypt 1995 max - Sep lastFri 3:00 0 - |
| // Africa/Cairo Egypt(EG) 2:00 Egypt EE%sT |
| kSystemTimeZones[180] = |
| new SimpleTimeZone(2*kMillisPerHour, "ART" /*alias for Africa/Cairo*/, |
| Calendar::APRIL, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[181] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Helsinki" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Helsinki Finland(FI) 2:00 EU EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[182] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Athens" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Athens Greece(GR) 2:00 EU EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[183] = |
| new SimpleTimeZone(2*kMillisPerHour, "Asia/Jerusalem" /*I%sT*/, |
| Calendar::MARCH, 15, -Calendar::FRIDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Zion 1999 max - Mar Fri>=15 0:00 1:00 D |
| // Rule Zion 1999 max - Sep Sun>=1 0:00 0 S |
| // Asia/Jerusalem Israel(IL) 2:00 Zion I%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[184] = |
| new SimpleTimeZone(2*kMillisPerHour, "Asia/Amman" /*EE%sT*/, |
| Calendar::APRIL, 1, -Calendar::FRIDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, 15, -Calendar::FRIDAY /*DOW>=DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Jordan 1993 max - Apr Fri>=1 0:00 1:00 S |
| // Rule Jordan 1995 max - Sep Fri>=15 0:00s 0 - |
| // Asia/Amman Jordan(JO) 2:00 Jordan EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[185] = |
| new SimpleTimeZone(2*kMillisPerHour, "Asia/Beirut" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S |
| // Rule Lebanon 1993 max - Sep lastSun 0:00 0 - |
| // Asia/Beirut Lebanon(LB) 2:00 Lebanon EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[186] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Vilnius" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S |
| // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Vilnius Lithuania(LT) 2:00 C-Eur EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[187] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Riga" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Latvia 1992 max - Mar lastSun 2:00s 1:00 S |
| // Rule Latvia 1992 max - Sep lastSun 2:00s 0 - |
| // Europe/Riga Latvia(LV) 2:00 Latvia EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[188] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Chisinau" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-Eur 1996 max - Oct lastSun 0:00 0 - |
| // Europe/Chisinau Moldova(MD) 2:00 E-Eur EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[189] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Bucharest" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-Eur 1996 max - Oct lastSun 0:00 0 - |
| // Europe/Bucharest Romania(RO) 2:00 E-Eur EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[190] = |
| new SimpleTimeZone(2*kMillisPerHour, "Asia/Damascus" /*EE%sT*/, |
| Calendar::APRIL, 1, 0 /*DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, 1, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Syria 1994 max - Apr 1 0:00 1:00 S |
| // Rule Syria 1994 max - Oct 1 0:00 0 - |
| // Asia/Damascus Syria(SY) 2:00 Syria EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[191] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Kiev" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Kiev Ukraine(UA) 2:00 EU EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[192] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Istanbul" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EU 1996 max - Oct lastSun 1:00u 0 - |
| // Europe/Istanbul Turkey(TR) 2:00 EU EE%sT |
| kSystemTimeZones[193] = |
| new SimpleTimeZone(2*kMillisPerHour, "EET" /*alias for Europe/Istanbul*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[194] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Bahrain" /*AST*/); |
| // Asia/Bahrain Bahrain(BH) 3:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[195] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Djibouti" /*EAT*/); |
| // Africa/Djibouti Djibouti(DJ) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[196] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Asmera" /*EAT*/); |
| // Africa/Asmera Eritrea(ER) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[197] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Addis_Ababa" /*EAT*/); |
| // Africa/Addis_Ababa Ethiopia(ET) 3:00 - EAT |
| kSystemTimeZones[198] = |
| new SimpleTimeZone(3*kMillisPerHour, "EAT" /*alias for Africa/Addis_Ababa*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[199] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Nairobi" /*EAT*/); |
| // Africa/Nairobi Kenya(KE) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[200] = |
| new SimpleTimeZone(3*kMillisPerHour, "Indian/Comoro" /*EAT*/); |
| // Indian/Comoro Comoros(KM) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[201] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Kuwait" /*AST*/); |
| // Asia/Kuwait Kuwait(KW) 3:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[202] = |
| new SimpleTimeZone(3*kMillisPerHour, "Indian/Antananarivo" /*EAT*/); |
| // Indian/Antananarivo Madagascar(MK) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[203] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Qatar" /*AST*/); |
| // Asia/Qatar Qatar(QA) 3:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[204] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Mogadishu" /*EAT*/); |
| // Africa/Mogadishu Somalia(SO) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[205] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Dar_es_Salaam" /*EAT*/); |
| // Africa/Dar_es_Salaam Tanzania(TZ) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[206] = |
| new SimpleTimeZone(3*kMillisPerHour, "Africa/Kampala" /*EAT*/); |
| // Africa/Kampala Uganda(UG) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[207] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Aden" /*AST*/); |
| // Asia/Aden Yemen(YE) 3:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[208] = |
| new SimpleTimeZone(3*kMillisPerHour, "Indian/Mayotte" /*EAT*/); |
| // Indian/Mayotte Mayotte(YT) 3:00 - EAT |
| //---------------------------------------------------------- |
| kSystemTimeZones[209] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Riyadh" /*AST*/); |
| // Asia/Riyadh Saudi Arabia(SA) 3:00 - AST |
| //---------------------------------------------------------- |
| kSystemTimeZones[210] = |
| new SimpleTimeZone(3*kMillisPerHour, "Asia/Baghdad" /*A%sT*/, |
| Calendar::APRIL, 1, 0 /*DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, 1, 0 /*DOM*/, 4*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Iraq 1991 max - Apr 1 3:00s 1:00 D |
| // Rule Iraq 1991 max - Oct 1 3:00s 0 D |
| // Asia/Baghdad Iraq(IQ) 3:00 Iraq A%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[211] = |
| new SimpleTimeZone(3*kMillisPerHour, "Europe/Simferopol" /*MSK/MSD*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Crimea 1996 max - Mar lastSun 0:00u 1:00 - |
| // Rule Crimea 1996 max - Oct lastSun 0:00u 0 - |
| // Europe/Simferopol Ukraine(UA) 3:00 Crimea MSK/MSD |
| //---------------------------------------------------------- |
| kSystemTimeZones[212] = |
| new SimpleTimeZone(3*kMillisPerHour, "Europe/Moscow" /*MSK/MSD*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Moscow Russia(RU) 3:00 Russia MSK/MSD |
| //---------------------------------------------------------- |
| kSystemTimeZones[213] = |
| new SimpleTimeZone((int32_t)(3.5*kMillisPerHour), "Asia/Tehran" /*IR%sT*/, |
| Calendar::MARCH, 21, 0 /*DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, 23, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Iran 1997 1999 - Mar 21 0:00 1:00 S |
| // Rule Iran 1997 1999 - Sep 23 0:00 0 - |
| // Asia/Tehran Iran(IR) 3:30 Iran IR%sT |
| kSystemTimeZones[214] = |
| new SimpleTimeZone((int32_t)(3.5*kMillisPerHour), "MET" /*alias for Asia/Tehran*/, |
| Calendar::MARCH, 21, 0 /*DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, 23, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[215] = |
| new SimpleTimeZone(4*kMillisPerHour, "Asia/Dubai" /*GST*/); |
| // Asia/Dubai United Arab Emirates(AE) 4:00 - GST |
| //---------------------------------------------------------- |
| kSystemTimeZones[216] = |
| new SimpleTimeZone(4*kMillisPerHour, "Indian/Mauritius" /*MUT*/); |
| // Indian/Mauritius Mauritius(MU) 4:00 - MUT # Mauritius Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[217] = |
| new SimpleTimeZone(4*kMillisPerHour, "Asia/Muscat" /*GST*/); |
| // Asia/Muscat Oman(OM) 4:00 - GST |
| //---------------------------------------------------------- |
| kSystemTimeZones[218] = |
| new SimpleTimeZone(4*kMillisPerHour, "Indian/Reunion" /*RET*/); |
| // Indian/Reunion Reunion(RE) 4:00 - RET # Reunion Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[219] = |
| new SimpleTimeZone(4*kMillisPerHour, "Indian/Mahe" /*SCT*/); |
| // Indian/Mahe Seychelles(SC) 4:00 - SCT # Seychelles Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[220] = |
| new SimpleTimeZone(4*kMillisPerHour, "Asia/Yerevan" /*AM%sT*/); |
| // Asia/Yerevan Armenia(AM) 4:00 - AM%sT |
| kSystemTimeZones[221] = |
| new SimpleTimeZone(4*kMillisPerHour, "NET" /*alias for Asia/Yerevan*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[222] = |
| new SimpleTimeZone(4*kMillisPerHour, "Asia/Baku" /*AZ%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 5*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 5*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S |
| // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 - |
| // Asia/Baku Azerbaijan(AZ) 4:00 EUAsia AZ%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[223] = |
| new SimpleTimeZone(4*kMillisPerHour, "Asia/Aqtau" /*AQT%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - |
| // Asia/Aqtau Kazakhstan(KZ) 4:00 E-EurAsia AQT%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[224] = |
| new SimpleTimeZone(4*kMillisPerHour, "Europe/Samara" /*SAM%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Samara Russia(RU) 4:00 Russia SAM%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[225] = |
| new SimpleTimeZone((int32_t)(4.5*kMillisPerHour), "Asia/Kabul" /*AFT*/); |
| // Asia/Kabul Afghanistan(AF) 4:30 - AFT |
| //---------------------------------------------------------- |
| kSystemTimeZones[226] = |
| new SimpleTimeZone(5*kMillisPerHour, "Indian/Kerguelen" /*TFT*/); |
| // Indian/Kerguelen France - year-round bases(FR) 5:00 - TFT # ISO code TF Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[227] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Tbilisi" /*GET*/); |
| // Asia/Tbilisi Georgia(GE) 5:00 - GET |
| //---------------------------------------------------------- |
| kSystemTimeZones[228] = |
| new SimpleTimeZone(5*kMillisPerHour, "Indian/Chagos" /*IOT*/); |
| // Indian/Chagos British Indian Ocean Territory(IO) 5:00 - IOT # BIOT Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[229] = |
| new SimpleTimeZone(5*kMillisPerHour, "Indian/Maldives" /*MVT*/); |
| // Indian/Maldives Maldives(MV) 5:00 - MVT # Maldives Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[230] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Dushanbe" /*TJT*/); |
| // Asia/Dushanbe Tajikistan(TJ) 5:00 - TJT # Tajikistan Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[231] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Ashkhabad" /*TMT*/); |
| // Asia/Ashkhabad Turkmenistan(TM) 5:00 - TMT # Turkmenistan Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[232] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Tashkent" /*UZT*/); |
| // Asia/Tashkent Uzbekistan(UZ) 5:00 - UZT # Uzbekistan Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[233] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Karachi" /*PKT*/); |
| // Asia/Karachi Pakistan(PK) 5:00 - PKT # Pakistan Time |
| kSystemTimeZones[234] = |
| new SimpleTimeZone(5*kMillisPerHour, "PLT" /*alias for Asia/Karachi*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[235] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Bishkek" /*KG%sT*/, |
| Calendar::APRIL, 7, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Kirgiz 1992 max - Apr Sun>=7 0:00 1:00 S |
| // Rule Kirgiz 1991 max - Sep lastSun 0:00 0 - |
| // Asia/Bishkek Kirgizstan(KG) 5:00 Kirgiz KG%sT # Kirgizstan Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[236] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Aqtobe" /*AQT%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - |
| // Asia/Aqtobe Kazakhstan(KZ) 5:00 E-EurAsia AQT%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[237] = |
| new SimpleTimeZone(5*kMillisPerHour, "Asia/Yekaterinburg" /*YEK%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Yekaterinburg Russia(RU) 5:00 Russia YEK%sT # Yekaterinburg Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[238] = |
| new SimpleTimeZone((int32_t)(5.5*kMillisPerHour), "Asia/Calcutta" /*IST*/); |
| // Asia/Calcutta India(IN) 5:30 - IST |
| kSystemTimeZones[239] = |
| new SimpleTimeZone((int32_t)(5.5*kMillisPerHour), "IST" /*alias for Asia/Calcutta*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[240] = |
| new SimpleTimeZone((int32_t)(5.75*kMillisPerHour), "Asia/Katmandu" /*NPT*/); |
| // Asia/Katmandu Nepal(NP) 5:45 - NPT # Nepal Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[241] = |
| new SimpleTimeZone(6*kMillisPerHour, "Antarctica/Mawson" /*MAWT*/); |
| // Antarctica/Mawson Australia - territories(AQ) 6:00 - MAWT # Mawson Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[242] = |
| new SimpleTimeZone(6*kMillisPerHour, "Asia/Colombo" /*LKT*/); |
| // Asia/Colombo Sri Lanka(LK) 6:00 - LKT |
| //---------------------------------------------------------- |
| kSystemTimeZones[243] = |
| new SimpleTimeZone(6*kMillisPerHour, "Asia/Dacca" /*BDT*/); |
| // Asia/Dacca Bangladesh(BD) 6:00 - BDT # Bangladesh Time |
| kSystemTimeZones[244] = |
| new SimpleTimeZone(6*kMillisPerHour, "BST" /*alias for Asia/Dacca*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[245] = |
| new SimpleTimeZone(6*kMillisPerHour, "Asia/Alma-Ata" /*ALM%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S |
| // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - |
| // Asia/Alma-Ata Kazakhstan(KZ) 6:00 E-EurAsia ALM%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[246] = |
| new SimpleTimeZone(6*kMillisPerHour, "Asia/Novosibirsk" /*NOV%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Novosibirsk Russia(RU) 6:00 Russia NOV%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[247] = |
| new SimpleTimeZone((int32_t)(6.5*kMillisPerHour), "Indian/Cocos" /*CCT*/); |
| // Indian/Cocos Cocos(CC) 6:30 - CCT # Cocos Islands Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[248] = |
| new SimpleTimeZone((int32_t)(6.5*kMillisPerHour), "Asia/Rangoon" /*MMT*/); |
| // Asia/Rangoon Burma / Myanmar(MM) 6:30 - MMT # Myanmar Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[249] = |
| new SimpleTimeZone(7*kMillisPerHour, "Indian/Christmas" /*CXT*/); |
| // Indian/Christmas Australian miscellany(AU) 7:00 - CXT # Christmas Island Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[250] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Jakarta" /*JAVT*/); |
| // Asia/Jakarta Indonesia(ID) 7:00 - JAVT |
| //---------------------------------------------------------- |
| kSystemTimeZones[251] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Phnom_Penh" /*ICT*/); |
| // Asia/Phnom_Penh Cambodia(KH) 7:00 - ICT |
| //---------------------------------------------------------- |
| kSystemTimeZones[252] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Vientiane" /*ICT*/); |
| // Asia/Vientiane Laos(LA) 7:00 - ICT |
| //---------------------------------------------------------- |
| kSystemTimeZones[253] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Saigon" /*ICT*/); |
| // Asia/Saigon Vietnam(VN) 7:00 - ICT |
| kSystemTimeZones[254] = |
| new SimpleTimeZone(7*kMillisPerHour, "VST" /*alias for Asia/Saigon*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[255] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Bangkok" /*ICT*/); |
| // Asia/Bangkok Thailand(TH) 7:00 - ICT |
| //---------------------------------------------------------- |
| kSystemTimeZones[256] = |
| new SimpleTimeZone(7*kMillisPerHour, "Asia/Krasnoyarsk" /*KRA%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Krasnoyarsk Russia(RU) 7:00 Russia KRA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[257] = |
| new SimpleTimeZone(8*kMillisPerHour, "Antarctica/Casey" /*WST*/); |
| // Antarctica/Casey Australia - territories(AQ) 8:00 - WST # Western (Aus) Standard Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[258] = |
| new SimpleTimeZone(8*kMillisPerHour, "Australia/Perth" /*WST*/); |
| // Australia/Perth Australia(AU) 8:00 - WST |
| //---------------------------------------------------------- |
| kSystemTimeZones[259] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Brunei" /*BNT*/); |
| // Asia/Brunei Brunei(BN) 8:00 - BNT |
| //---------------------------------------------------------- |
| kSystemTimeZones[260] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Hong_Kong" /*C%sT*/); |
| // Asia/Hong_Kong China(HK) 8:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[261] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Ujung_Pandang" /*BORT*/); |
| // Asia/Ujung_Pandang Indonesia(ID) 8:00 - BORT |
| //---------------------------------------------------------- |
| kSystemTimeZones[262] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Ishigaki" /*CST*/); |
| // Asia/Ishigaki Japan(JP) 8:00 - CST |
| //---------------------------------------------------------- |
| kSystemTimeZones[263] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Macao" /*C%sT*/); |
| // Asia/Macao Macao(MO) 8:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[264] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Kuala_Lumpur" /*MYT*/); |
| // Asia/Kuala_Lumpur Malaysia(MY) 8:00 - MYT # Malaysia Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[265] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Manila" /*PH%sT*/); |
| // Asia/Manila Philippines(PH) 8:00 - PH%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[266] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Singapore" /*SGT*/); |
| // Asia/Singapore Singapore(SG) 8:00 - SGT |
| //---------------------------------------------------------- |
| kSystemTimeZones[267] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Taipei" /*C%sT*/); |
| // Asia/Taipei Taiwan(TW) 8:00 - C%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[268] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Shanghai" /*C%sT*/); |
| // Asia/Shanghai China(CN) 8:00 - C%sT |
| kSystemTimeZones[269] = |
| new SimpleTimeZone(8*kMillisPerHour, "CTT" /*alias for Asia/Shanghai*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[270] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Ulan_Bator" /*ULA%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, |
| Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Mongol 1991 max - Mar lastSun 0:00 1:00 S |
| // Rule Mongol 1997 max - Sep lastSun 0:00 0 - |
| // Asia/Ulan_Bator Mongolia(MN) 8:00 Mongol ULA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[271] = |
| new SimpleTimeZone(8*kMillisPerHour, "Asia/Irkutsk" /*IRK%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Irkutsk Russia(RU) 8:00 Russia IRK%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[272] = |
| new SimpleTimeZone(9*kMillisPerHour, "Asia/Jayapura" /*JAYT*/); |
| // Asia/Jayapura Indonesia(ID) 9:00 - JAYT |
| //---------------------------------------------------------- |
| kSystemTimeZones[273] = |
| new SimpleTimeZone(9*kMillisPerHour, "Asia/Pyongyang" /*KST*/); |
| // Asia/Pyongyang ?(KP) 9:00 - KST |
| //---------------------------------------------------------- |
| kSystemTimeZones[274] = |
| new SimpleTimeZone(9*kMillisPerHour, "Asia/Seoul" /*K%sT*/); |
| // Asia/Seoul ?(KR) 9:00 - K%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[275] = |
| new SimpleTimeZone(9*kMillisPerHour, "Pacific/Palau" /*PWT*/); |
| // Pacific/Palau Palau(PW) 9:00 - PWT # Palau Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[276] = |
| new SimpleTimeZone(9*kMillisPerHour, "Asia/Tokyo" /*JST*/); |
| // Asia/Tokyo Japan(JP) 9:00 - JST |
| kSystemTimeZones[277] = |
| new SimpleTimeZone(9*kMillisPerHour, "JST" /*alias for Asia/Tokyo*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[278] = |
| new SimpleTimeZone(9*kMillisPerHour, "Asia/Yakutsk" /*YAK%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Yakutsk Russia(RU) 9:00 Russia YAK%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[279] = |
| new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "Australia/Darwin" /*CST*/); |
| // Australia/Darwin Australia(AU) 9:30 - CST |
| kSystemTimeZones[280] = |
| new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "ACT" /*alias for Australia/Darwin*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[281] = |
| new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "Australia/Adelaide" /*CST*/, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule AS 1987 max - Oct lastSun 2:00s 1:00 - |
| // Rule AS 1995 max - Mar lastSun 2:00s 0 - |
| // Australia/Adelaide South Australia(AU) 9:30 AS CST |
| //---------------------------------------------------------- |
| kSystemTimeZones[282] = |
| new SimpleTimeZone(10*kMillisPerHour, "Pacific/Truk" /*TRUT*/); |
| // Pacific/Truk Micronesia(FM) 10:00 - TRUT # Truk Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[283] = |
| new SimpleTimeZone(10*kMillisPerHour, "Pacific/Guam" /*GST*/); |
| // Pacific/Guam Guam(GU) 10:00 - GST |
| //---------------------------------------------------------- |
| kSystemTimeZones[284] = |
| new SimpleTimeZone(10*kMillisPerHour, "Pacific/Saipan" /*MPT*/); |
| // Pacific/Saipan N Mariana Is(MP) 10:00 - MPT |
| //---------------------------------------------------------- |
| kSystemTimeZones[285] = |
| new SimpleTimeZone(10*kMillisPerHour, "Pacific/Port_Moresby" /*PGT*/); |
| // Pacific/Port_Moresby Papua New Guinea(PG) 10:00 - PGT # Papua New Guinea Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[286] = |
| new SimpleTimeZone(10*kMillisPerHour, "Australia/Brisbane" /*EST*/); |
| // Australia/Brisbane Australia(AU) 10:00 - EST |
| //---------------------------------------------------------- |
| kSystemTimeZones[287] = |
| new SimpleTimeZone(10*kMillisPerHour, "Asia/Vladivostok" /*VLA%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Vladivostok Russia(RU) 10:00 Russia VLA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[288] = |
| new SimpleTimeZone(10*kMillisPerHour, "Australia/Sydney" /*EST*/, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule AN 1987 max - Oct lastSun 2:00s 1:00 - |
| // Rule AN 1996 max - Mar lastSun 2:00s 0 - |
| // Australia/Sydney New South Wales(AU) 10:00 AN EST |
| kSystemTimeZones[289] = |
| new SimpleTimeZone(10*kMillisPerHour, "AET" /*alias for Australia/Sydney*/, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[290] = |
| new SimpleTimeZone((int32_t)(10.5*kMillisPerHour), "Australia/Lord_Howe" /*LHST*/, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, (int32_t)(0.5*kMillisPerHour),fgStatus); |
| // Rule LH 1987 max - Oct lastSun 2:00s 0:30 - |
| // Rule LH 1996 max - Mar lastSun 2:00s 0 - |
| // Australia/Lord_Howe Lord Howe Island(AU) 10:30 LH LHST |
| //---------------------------------------------------------- |
| kSystemTimeZones[291] = |
| new SimpleTimeZone(11*kMillisPerHour, "Pacific/Ponape" /*PONT*/); |
| // Pacific/Ponape Micronesia(FM) 11:00 - PONT # Ponape Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[292] = |
| new SimpleTimeZone(11*kMillisPerHour, "Pacific/Efate" /*VU%sT*/); |
| // Pacific/Efate Vanuatu(VU) 11:00 - VU%sT # Vanuatu Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[293] = |
| new SimpleTimeZone(11*kMillisPerHour, "Pacific/Guadalcanal" /*SBT*/); |
| // Pacific/Guadalcanal Solomon Is(SB) 11:00 - SBT # Solomon Is Time |
| kSystemTimeZones[294] = |
| new SimpleTimeZone(11*kMillisPerHour, "SST" /*alias for Pacific/Guadalcanal*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[295] = |
| new SimpleTimeZone(11*kMillisPerHour, "Pacific/Noumea" /*NC%sT*/, |
| Calendar::NOVEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule NC 1997 max - Mar Sun>=1 2:00s 0 - |
| // Rule NC 1997 max - Nov lastSun 2:00s 1:00 S |
| // Pacific/Noumea New Caledonia(NC) 11:00 NC NC%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[296] = |
| new SimpleTimeZone(11*kMillisPerHour, "Asia/Magadan" /*MAG%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Magadan Russia(RU) 11:00 Russia MAG%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[297] = |
| new SimpleTimeZone((int32_t)(11.5*kMillisPerHour), "Pacific/Norfolk" /*NFT*/); |
| // Pacific/Norfolk Norfolk(NF) 11:30 - NFT # Norfolk Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[298] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Kosrae" /*KOST*/); |
| // Pacific/Kosrae Micronesia(FM) 12:00 - KOST # Kosrae Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[299] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Tarawa" /*GILT*/); |
| // Pacific/Tarawa Kiribati(KI) 12:00 - GILT # Gilbert Is Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[300] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Majuro" /*MHT*/); |
| // Pacific/Majuro Marshall Is(MH) 12:00 - MHT |
| //---------------------------------------------------------- |
| kSystemTimeZones[301] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Nauru" /*NRT*/); |
| // Pacific/Nauru Nauru(NR) 12:00 - NRT |
| //---------------------------------------------------------- |
| kSystemTimeZones[302] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Funafuti" /*TVT*/); |
| // Pacific/Funafuti Tuvalu(TV) 12:00 - TVT # Tuvalu Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[303] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Wake" /*WAKT*/); |
| // Pacific/Wake Wake(US) 12:00 - WAKT # Wake Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[304] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Wallis" /*WFT*/); |
| // Pacific/Wallis Wallis and Futuna(WF) 12:00 - WFT # Wallis & Futuna Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[305] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Fiji" /*FJT*/); |
| // Pacific/Fiji Fiji(FJ) 12:00 - FJT # Fiji Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[306] = |
| new SimpleTimeZone(12*kMillisPerHour, "Antarctica/McMurdo" /*NZ%sT*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule NZAQ 1990 max - Oct Sun>=1 2:00s 1:00 D |
| // Rule NZAQ 1990 max - Mar Sun>=15 2:00s 0 S |
| // Antarctica/McMurdo USA - year-round bases(AQ) 12:00 NZAQ NZ%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[307] = |
| new SimpleTimeZone(12*kMillisPerHour, "Asia/Kamchatka" /*PET%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Kamchatka Russia(RU) 12:00 Russia PET%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[308] = |
| new SimpleTimeZone(12*kMillisPerHour, "Pacific/Auckland" /*NZ%sT*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D |
| // Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S |
| // Pacific/Auckland New Zealand(NZ) 12:00 NZ NZ%sT |
| kSystemTimeZones[309] = |
| new SimpleTimeZone(12*kMillisPerHour, "NST" /*alias for Pacific/Auckland*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[310] = |
| new SimpleTimeZone((int32_t)(12.75*kMillisPerHour), "Pacific/Chatham" /*CHA%sT*/, |
| Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, (int32_t)(2.75*kMillisPerHour), |
| Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, (int32_t)(3.75*kMillisPerHour), 1*kMillisPerHour,fgStatus); |
| // Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D |
| // Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S |
| // Pacific/Chatham New Zealand(NZ) 12:45 Chatham CHA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[311] = |
| new SimpleTimeZone(13*kMillisPerHour, "Pacific/Enderbury" /*PHOT*/); |
| // Pacific/Enderbury Kiribati(KI) 13:00 - PHOT |
| //---------------------------------------------------------- |
| kSystemTimeZones[312] = |
| new SimpleTimeZone(13*kMillisPerHour, "Pacific/Tongatapu" /*TOT*/); |
| // Pacific/Tongatapu Tonga(TO) 13:00 - TOT |
| //---------------------------------------------------------- |
| kSystemTimeZones[313] = |
| new SimpleTimeZone(13*kMillisPerHour, "Asia/Anadyr" /*ANA%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Asia/Anadyr Russia(RU) 13:00 Russia ANA%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[314] = |
| new SimpleTimeZone(14*kMillisPerHour, "Pacific/Kiritimati" /*LINT*/); |
| // Pacific/Kiritimati Kiribati(KI) 14:00 - LINT |
| kSystemTimeZones[315] = |
| new SimpleTimeZone(-7*kMillisPerHour, "PNT" /*alias for America/Phoenix*/); |
| //---------------------------------------------------------- |
| kSystemTimeZones[316] = |
| new SimpleTimeZone((int32_t)(-3.5*kMillisPerHour), "CNT" /*alias for America/St_Johns*/, |
| Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| //---------------------------------------------------------- |
| kSystemTimeZones[317] = |
| new SimpleTimeZone(10*kMillisPerHour, "Antarctica/DumontDUrville" /*DDUT*/); |
| // Antarctica/DumontDUrville France - year-round bases(AQ) 10:00 - DDUT # Dumont-d'Urville Time |
| //---------------------------------------------------------- |
| kSystemTimeZones[318] = |
| new SimpleTimeZone(2*kMillisPerHour, "Europe/Kaliningrad" /*EE%sT*/, |
| Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, |
| Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus); |
| // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S |
| // Rule Russia 1996 max - Oct lastSun 2:00s 0 - |
| // Europe/Kaliningrad Russia(RU) 2:00 Russia EE%sT |
| //---------------------------------------------------------- |
| kSystemTimeZones[319] = |
| new SimpleTimeZone(6*kMillisPerHour, "Asia/Thimbu" /*BTT*/); |
| // Asia/Thimbu Bhutan(BT) 6:00 - BTT # Bhutan Time |
| //---------------------------------------------------------- |
| } |
| } |
| // ---------------- END GENERATED DATA ---------------- |
| |
| // *** clean up from definitions |
| #undef int |
| #undef kMillisPerHour |
| |
| // ***************************************************************************** |
| // class TimeZone |
| // ***************************************************************************** |
| |
| TimeZone::TimeZone() |
| { |
| } |
| |
| // ------------------------------------- |
| |
| TimeZone::~TimeZone() |
| { |
| } |
| |
| // ------------------------------------- |
| |
| TimeZone::TimeZone(const TimeZone &source) |
| : fID(source.fID) |
| { |
| } |
| |
| // ------------------------------------- |
| |
| TimeZone & |
| TimeZone::operator=(const TimeZone &right) |
| { |
| if (this != &right) fID = right.fID; |
| return *this; |
| } |
| |
| // ------------------------------------- |
| |
| bool_t |
| TimeZone::operator==(const TimeZone& that) const |
| { |
| return getDynamicClassID() == that.getDynamicClassID() && |
| fID == that.fID; |
| } |
| |
| // ------------------------------------- |
| |
| /** |
| * Return a reference to the static Hashtable of registered TimeZone |
| * objects. Performs initialization if necessary. |
| * |
| * This method is also responsible for initializing the array |
| * fgAvailableIDs and fgAvailableIDsCount. |
| */ |
| const UHashtable& |
| TimeZone::getHashtable() |
| { |
| if (kSystemInited == FALSE) { |
| initSystemTimeZones(); |
| } |
| if (fgAvailableIDs == 0) |
| { |
| UHashtable *newHashtable; |
| int32_t newTimeZonesCount; |
| UnicodeString *newAvailableIds; |
| |
| // build a hashtable that contains all the TimeZone objects in kSystemTimeZones |
| // and maps their IDs to the actual TimeZone objects (gives us fast lookup) |
| UErrorCode err = ZERO_ERROR; |
| newHashtable = uhash_open((UHashFunction) uhash_hashUString, &err); |
| uhash_setValueDeleter(newHashtable, TimeZone::deleteTimeZone); |
| |
| newTimeZonesCount = kSystemTimeZonesCount; |
| newAvailableIds = new UnicodeString[newTimeZonesCount]; |
| |
| int32_t i; |
| for (i=0; i<kSystemTimeZonesCount; ++i) |
| { |
| SimpleTimeZone *tz = kSystemTimeZones[i]; |
| uhash_putKey(newHashtable, (tz->getID(newAvailableIds[i])).hashCode() & 0x7FFFFFFF, tz , &err); |
| } |
| |
| Mutex lock; |
| // We must recheck fgHashtable for correct locking |
| if (fgHashtable == 0) |
| { |
| fgHashtable = newHashtable; |
| fgAvailableIDsCount = newTimeZonesCount; |
| fgAvailableIDs = newAvailableIds; |
| } |
| else |
| { |
| uhash_close(newHashtable); |
| delete [] newAvailableIds; |
| } |
| } |
| return *fgHashtable; |
| } |
| |
| // ------------------------------------- |
| |
| /** |
| * Convert a non-localized string to an integer using a system function. |
| * Return a failing UErrorCode status if all characters are not parsed. |
| */ |
| /*int32_t |
| TimeZone::stringToInteger(const UnicodeString& string, UErrorCode& status) |
| { |
| if (FAILURE(status)) return 0; |
| |
| int32_t len = string.size(); |
| char *number = new char[1 + len]; |
| if (number == 0) { status = MEMORY_ALLOCATION_ERROR; return 0; } |
| char *end; |
| |
| string.extract(0, len, number); |
| number[len] = 0; |
| int32_t value = strtol(number, &end, 10); // Radix 10 |
| |
| delete[] number; |
| |
| if (end-number != len || len == 0) |
| status = INVALID_FORMAT_ERROR; |
| |
| return value; |
| }*/ |
| |
| // ------------------------------------- |
| |
| TimeZone* |
| TimeZone::createTimeZone(const UnicodeString& ID) |
| { |
| if (kSystemInited == FALSE) { |
| initSystemTimeZones(); |
| } |
| /* We first try to lookup the zone ID in our hashtable. If this fails, |
| * we try to parse it as a custom string GMT[+-]hh:mm. This allows us |
| * to recognize zones in user.timezone that otherwise cannot be |
| * identified. We do the recognition here, rather than in getDefault(), |
| * so that the default zone is always the result of calling |
| * getTimeZone() with the property user.timezone. |
| * |
| * If all else fails, we return GMT, which is probably not what the user |
| * wants, but at least is a functioning TimeZone object. */ |
| |
| TimeZone* result = NULL; |
| UHashtable h = getHashtable(); |
| result = (TimeZone*)uhash_get(&h, ID.hashCode() & 0x7FFFFFFF); |
| if(result != NULL) |
| return result->clone(); |
| |
| // result == NULL |
| result = createCustomTimeZone(ID); |
| if(result == NULL) |
| result = GMT->clone(); |
| |
| return result; |
| } |
| |
| // ------------------------------------- |
| |
| void |
| TimeZone::initDefault() |
| { |
| if (kSystemInited == FALSE) { |
| initSystemTimeZones(); |
| } |
| // This function is called by createDefault() and adoptDefault() to initialize |
| // fgDefaultZone from the system default time zone. If fgDefaultZone is already |
| // filled in, we obviously don't have to do anything. |
| if (fgDefaultZone == NULL) |
| { |
| |
| // We access system timezone data through TPlatformUtilities, |
| // including tzset(), timezone, and tzname[]. |
| TimeZone *newZone = NULL; |
| int32_t rawOffset = 0; |
| const char *hostID; |
| UnicodeString ID; |
| |
| // First, try to create the timezone from our hashtable, based |
| // on the string ID in tzname[0]. |
| { |
| Mutex lock; // mutexed to avoid threading issues in the platform fcns. |
| icu_tzset(); // Initialize tz... system data |
| |
| // get the timezone ID from the host. |
| hostID = icu_tzname(0); |
| |
| // Invert sign because UNIX semantics are backwards |
| rawOffset = icu_timezone() * -kMillisPerSecond; |
| } |
| |
| // create UnicodeString ID from hostID (to avoid Mutex deadlock) |
| ID = hostID; |
| |
| if (ID.size() > 0) |
| { |
| UHashtable h = getHashtable(); |
| TimeZone *z = (TimeZone*)uhash_get(&h,ID.hashCode() & 0x7FFFFFFF); |
| // Important -- must clone the TimeZone because fgDefaultZone may be |
| // deleted by adoptDefault(). |
| if (z != 0) newZone = z->clone(); |
| } |
| |
| // If we couldn't get the time zone ID from the host, use the |
| // default host timezone offset, timezone. |
| if (newZone == NULL) |
| { |
| // just pick the first entry in the time zone list that has the |
| // appropriate GMT offset (if there is one) |
| int32_t numMatches = 0; |
| const UnicodeString** matches = createAvailableIDs(rawOffset, numMatches); |
| if (numMatches > 0) { |
| newZone = createTimeZone(*matches[0]); |
| delete [] matches; |
| } |
| } |
| |
| // If we _still_ don't have a time zone, use the one specified by kLastResortID. |
| // (This call should always succeed, since we code the Hashtable |
| // to always contain this TimeZone.) |
| if (newZone == NULL) |
| newZone = createTimeZone(kLastResortID); |
| |
| { |
| Mutex lock2; |
| if(fgDefaultZone != NULL) |
| delete newZone; |
| else |
| fgDefaultZone = newZone; |
| } |
| } |
| } |
| |
| // ------------------------------------- |
| |
| TimeZone* |
| TimeZone::createDefault() |
| { |
| initDefault(); // After this call fgDefaultZone is not NULL |
| Mutex lock; // Careful...must have mutex here |
| return fgDefaultZone->clone(); |
| } |
| |
| // ------------------------------------- |
| |
| void |
| TimeZone::adoptDefault(TimeZone* zone) |
| { |
| if (kSystemInited == FALSE) { |
| initSystemTimeZones(); |
| } |
| |
| if (zone != NULL) |
| { |
| Mutex mutex; |
| |
| if (fgDefaultZone != NULL) { |
| delete fgDefaultZone; |
| } |
| |
| fgDefaultZone = zone; |
| } |
| } |
| // ------------------------------------- |
| |
| void |
| TimeZone::setDefault(const TimeZone& zone) |
| { |
| adoptDefault(zone.clone()); |
| } |
| |
| // ------------------------------------- |
| |
| const UnicodeString** const |
| TimeZone::createAvailableIDs(int32_t rawOffset, int32_t& numIDs) |
| { |
| // We are creating a new array to existing UnicodeString pointers. |
| // The caller will delete the array when done, but not the pointers |
| // in the array. |
| |
| getHashtable(); // Force initialization of fgAvailableIDs |
| |
| const UnicodeString** const ptrArray = |
| (const UnicodeString** const) new UnicodeString*[fgAvailableIDsCount]; |
| |
| numIDs = 0; |
| int32_t pos = -1; |
| UHashtable e = getHashtable(); |
| void* value; |
| UnicodeString anID; |
| |
| while (numIDs < fgAvailableIDsCount && (value = uhash_nextElement(&e, &pos))) |
| { |
| if (rawOffset == ((SimpleTimeZone *)value)->getRawOffset()) |
| ptrArray[numIDs++] = new UnicodeString(((SimpleTimeZone *)value)->getID(anID)); |
| } |
| |
| return ptrArray; |
| } |
| |
| // ------------------------------------- |
| |
| const UnicodeString** const |
| TimeZone::createAvailableIDs(int32_t& numIDs) |
| { |
| // We are creating a new array to existing UnicodeString pointers. |
| // The caller will delete the array when done, but not the pointers |
| // in the array. |
| |
| getHashtable(); // Force initialization of fgAvailableIDs |
| |
| const UnicodeString** const ptrArray = |
| (const UnicodeString** const) new UnicodeString*[fgAvailableIDsCount]; |
| |
| for (int32_t i=0; i<fgAvailableIDsCount; ++i) |
| ptrArray[i] = &fgAvailableIDs[i]; |
| |
| numIDs = fgAvailableIDsCount; |
| return ptrArray; |
| } |
| |
| // --------------------------------------- |
| |
| |
| UnicodeString& |
| TimeZone::getDisplayName(UnicodeString& result) const |
| { |
| return getDisplayName(FALSE,LONG,Locale::getDefault(), result); |
| } |
| |
| UnicodeString& |
| TimeZone::getDisplayName(const Locale& locale, UnicodeString& result) const |
| { |
| return getDisplayName(FALSE, LONG, locale, result); |
| } |
| |
| UnicodeString& |
| TimeZone::getDisplayName(bool_t daylight, EDisplayType style, UnicodeString& result) const |
| { |
| return getDisplayName(daylight,style, Locale::getDefault(), result); |
| } |
| |
| UnicodeString& |
| TimeZone::getDisplayName(bool_t daylight, EDisplayType style, const Locale& locale, UnicodeString& result) const |
| { |
| if (kSystemInited == FALSE) { |
| initSystemTimeZones(); |
| } |
| // SRL TODO: cache the SDF, just like java. |
| UErrorCode status = ZERO_ERROR; |
| |
| SimpleDateFormat format(style == LONG ? "zzzz" : "z",locale,status); |
| |
| if(!SUCCESS(status)) |
| { |
| // *** SRL what do I do here?!! |
| return result.remove(); |
| } |
| |
| // Create a new SimpleTimeZone as a stand-in for this zone; the |
| // stand-in will have no DST, or all DST, but the same ID and offset, |
| // and hence the same display name. |
| // We don't cache these because they're small and cheap to create. |
| UnicodeString tempID; |
| SimpleTimeZone *tz = daylight ? |
| // For the pure-DST zone, we use the month before JANUARY and |
| // the month after DECEMBER; if this fails to work at some future |
| // date because of increased error checking in SimpleTimeZone, |
| // change these parameters to JANUARY and DECEMBER, which will |
| // work equally well, but will be slower. |
| |
| new SimpleTimeZone(getRawOffset(), getID(tempID), |
| Calendar::JANUARY - 1, 1, 0, 0, |
| Calendar::DECEMBER + 1, 31, 0, kMillisPerDay, status) : |
| new SimpleTimeZone(getRawOffset(), getID(tempID)); |
| |
| format.applyPattern(style == LONG ? "zzzz" : "z"); |
| Calendar *myCalendar = (Calendar*)format.getCalendar(); |
| myCalendar->setTimeZone(*tz); // copy |
| |
| delete tz; |
| |
| FieldPosition pos(FieldPosition::DONT_CARE); |
| return format.format(UDate(), result, pos); // Doesn't matter what date we use |
| } |
| |
| |
| /** |
| * Parse a custom time zone identifier and return a corresponding zone. |
| * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or |
| * GMT[+-]hh. |
| * @return a newly created SimpleTimeZone with the given offset and |
| * no Daylight Savings Time, or null if the id cannot be parsed. |
| */ |
| TimeZone* |
| TimeZone::createCustomTimeZone(const UnicodeString& id) |
| { |
| static const int32_t kParseFailed = -99999; |
| |
| NumberFormat* numberFormat = 0; |
| |
| UnicodeString idUppercase = id; |
| idUppercase.toUpper(); |
| |
| if (id.size() > GMT_ID_LENGTH && |
| idUppercase.startsWith(GMT_ID)) |
| { |
| ParsePosition pos(GMT_ID_LENGTH); |
| bool_t negative = FALSE; |
| int32_t offset; |
| |
| if (id[pos.getIndex()] == 0x002D /*'-'*/) |
| negative = TRUE; |
| else if (id[pos.getIndex()] != 0x002B /*'+'*/) |
| return 0; |
| pos.setIndex(pos.getIndex() + 1); |
| |
| UErrorCode success = ZERO_ERROR; |
| numberFormat = NumberFormat::createInstance(success); |
| numberFormat->setParseIntegerOnly(TRUE); |
| |
| |
| // Look for either hh:mm, hhmm, or hh |
| int32_t start = pos.getIndex(); |
| |
| Formattable n(kParseFailed); |
| |
| numberFormat->parse(id, n, pos); |
| if (pos.getIndex() == start) return 0; |
| offset = n.getLong(); |
| |
| if (pos.getIndex() < id.size() && |
| id[pos.getIndex()] == 0x003A /*':'*/) |
| { |
| // hh:mm |
| offset *= 60; |
| pos.setIndex(pos.getIndex() + 1); |
| int32_t oldPos = pos.getIndex(); |
| n.setLong(kParseFailed); |
| numberFormat->parse(id, n, pos); |
| if (pos.getIndex() == oldPos) return 0; |
| offset += n.getLong(); |
| } |
| else |
| { |
| // hhmm or hh |
| |
| // Be strict about interpreting something as hh; it must be |
| // an offset < 30, and it must be one or two digits. Thus |
| // 0010 is interpreted as 00:10, but 10 is interpreted as |
| // 10:00. |
| if (offset < 30 && (pos.getIndex() - start) <= 2) |
| offset *= 60; // hh, from 00 to 29; 30 is 00:30 |
| else |
| offset = offset % 100 + offset / 100 * 60; // hhmm |
| } |
| |
| if(negative) |
| offset = -offset; |
| |
| return new SimpleTimeZone(offset * 60000, CUSTOM_ID); |
| delete numberFormat; |
| } |
| return 0; |
| } |
| |
| |
| bool_t |
| TimeZone::hasSameRules(const TimeZone& other) const |
| { |
| return (getRawOffset() == other.getRawOffset() && |
| useDaylightTime() == other.useDaylightTime()); |
| } |
| |
| //eof |