From 7c16e93db78ab659ea6f0727b1789cc37a23d4eb Mon Sep 17 00:00:00 2001 From: Daniel Hammer Date: Fri, 24 Apr 2026 15:25:58 +0200 Subject: [PATCH] feat: add time zone data --- programs/data/config/timezones.toml | 1838 +++++++++++++++++++++++++++ 1 file changed, 1838 insertions(+) create mode 100644 programs/data/config/timezones.toml diff --git a/programs/data/config/timezones.toml b/programs/data/config/timezones.toml new file mode 100644 index 0000000..9dbed43 --- /dev/null +++ b/programs/data/config/timezones.toml @@ -0,0 +1,1838 @@ +# MontaukOS Time Zone Data +# Contains all countries, their timezones, and DST rules. +# Generated: 2026-04-24 + +# ============================================================================= +# STRUCTURE +# ============================================================================= +# [countries.] - Country entry +# name: Full country name +# timezones: Array of city/timezone names within that country +# dst_enabled: Whether DST is used anywhere in this country +# default_tz: Primary/default timezone (used when only one needed) +# dst_rules: DST configuration (only if dst_enabled = true) +# rule: DST rule name (references [dst_rules.]) +# note: Optional note about DST exceptions + +# ============================================================================= +# DST RULES +# ============================================================================= +# DST rules define when DST starts and ends and what offset change occurs. + +[dst_rules.eu] +# European Union (EU) DST rules +# Starts: Last Sunday in March at 01:00 UTC +# Ends: Last Sunday in October at 01:00 UTC +# Offset: +1 hour in seconds +start = "last-sun-mar 01:00" +end = "last-sun-oct 01:00" +offset_change = 3600 + +[dst_rules.us] +# United States DST rules +# Starts: Second Sunday in March at 02:00 local +# Ends: First Sunday in November at 02:00 local +# Offset: +1 hour +start = "2nd-sun-mar 02:00" +end = "1st-sun-nov 02:00" +offset_change = 3600 + +[dst_rules.au] +# Australia DST rules (Southern Hemisphere) +# Starts: First Sunday in October at 02:00 local +# Ends: First Sunday in April at 03:00 local +# Offset: +1 hour +start = "1st-sun-oct 02:00" +end = "1st-sun-apr 03:00" +offset_change = 3600 + +[dst_rules.nz] +# New Zealand DST rules +# Starts: Last Sunday in September at 02:00 local +# Ends: First Sunday in April at 03:00 local +# Offset: +1 hour +start = "last-sun-sep 02:00" +end = "1st-sun-apr 03:00" +offset_change = 3600 + +[dst_rules.br] +# Brazil DST rules (Southern Hemisphere) +# Starts: First Sunday in November at 00:00 local +# Ends: Third Sunday in February at 00:00 local +# Offset: +1 hour +start = "1st-sun-nov 00:00" +end = "3rd-sun-feb 00:00" +offset_change = 3600 + +[dst_rules.cl] +# Chile DST rules +# Starts: First Sunday in September at 00:00 local +# Ends: First Sunday in April at 00:00 local +# Offset: +1 hour +start = "1st-sun-sep 00:00" +end = "1st-sun-apr 00:00" +offset_change = 3600 + +[dst_rules.paraguay] +# Paraguay DST rules +# Starts: First Sunday in October at 00:00 local +# Ends: Third Sunday in March at 00:00 local +# Offset: +1 hour +start = "1st-sun-oct 00:00" +end = "3rd-sun-mar 00:00" +offset_change = 3600 + +[dst_rules.canada] +# Canada DST rules (follows US with some exceptions) +# Saskatchewan, parts of Ontario/British Columbia: No DST or non-standard +start = "2nd-sun-mar 02:00" +end = "1st-sun-nov 02:00" +offset_change = 3600 + +[dst_rules.mexico] +# Mexico DST rules +# Starts: First Sunday in April at 02:00 local +# Ends: Last Sunday in October at 02:00 local +start = "1st-sun-apr 02:00" +end = "last-sun-oct 02:00" +offset_change = 3600 + +[dst_rules.falklands] +# Falkland Islands DST +# Starts: First Sunday in September at 02:00 local +# Ends: First Sunday in April at 02:00 local +start = "1st-sun-sep 02:00" +end = "1st-sun-apr 02:00" +offset_change = 3600 + +[dst_rules.iran] +# Iran DST rules +# Starts: Farvardin 1 (approx March 21) at 00:00 local +# Ends: Mehr 1 (approx September 21) at 00:00 local +# Offset: +1 hour +start = "mar-21 00:00" +end = "sep-21 00:00" +offset_change = 3600 + +[dst_rules.israel] +# Israel DST rules +# Starts: Friday before last Sunday in March +# Ends: Last Sunday in October +# Offset: +1 hour +start = "fri-before-last-sun-mar" +end = "last-sun-oct" +offset_change = 3600 + +[dst_rules.jordan] +# Jordan DST rules +# Starts: Last Thursday in March at 00:00 local +# Ends: Last Friday in October at 00:00 local +# Offset: +1 hour (was +2, changed 2023) +start = "last-thu-mar 00:00" +end = "last-fri-oct 00:00" +offset_change = 3600 + +[dst_rules.lebanon] +# Lebanon DST rules +# Starts: Last Sunday in March at 00:00 local +# Ends: Last Sunday in October at 00:00 local +# Offset: +1 hour +start = "last-sun-mar 00:00" +end = "last-sun-oct 00:00" +offset_change = 3600 + +[dst_rules.syria] +# Syria DST rules +# Starts: Last Friday in March at 00:00 local +# Ends: Last Friday in October at 00:00 local +# Offset: +1 hour +start = "last-fri-mar 00:00" +end = "last-fri-oct 00:00" +offset_change = 3600 + +[dst_rules.palestine] +# Palestine (Gaza/West Bank) DST rules +# Starts: Last Saturday in March at 00:00 local +# Ends: Last Saturday in October at 00:00 local +# Offset: +1 hour +start = "last-sat-mar 00:00" +end = "last-sat-oct 00:00" +offset_change = 3600 + +[dst_rules.morocco] +# Morocco DST rules (complex, with Eid al-Fitr exception) +# Starts: Last Sunday in March at 02:00 local +# Ends: Last Sunday in October at 03:00 local +# Offset: +1 hour (but ends at 03:00 not 02:00) +start = "last-sun-mar 02:00" +end = "last-sun-oct 03:00" +offset_change = 3600 + +[dst_rules.tunisia] +# Tunisia DST rules +# Starts: Last Sunday in March at 02:00 local +# Ends: Last Sunday in October at 03:00 local +# Offset: +1 hour +start = "last-sun-mar 02:00" +end = "last-sun-oct 03:00" +offset_change = 3600 + +[dst_rules.egypt] +# Egypt DST rules +# Starts: Last Friday in April at 00:00 local +# Ends: Last Thursday in October at 23:59 local +# Offset: +1 hour +start = "last-fri-apr 00:00" +end = "thu-before-last-sat-oct 23:59" +offset_change = 3600 + +[dst_rules.namibia] +# Namibia DST rules +# Starts: First Sunday in September at 02:00 local +# Ends: First Sunday in April at 02:00 local +# Offset: +1 hour +start = "1st-sun-sep 02:00" +end = "1st-sun-apr 02:00" +offset_change = 3600 + +# ============================================================================= +# AFRICA +# ============================================================================= + +[countries.DZ] +name = "Algeria" +timezones = ["Algiers"] +dst_enabled = false +default_tz = "Algiers" + +[countries.AO] +name = "Angola" +timezones = ["Luanda"] +dst_enabled = false +default_tz = "Luanda" + +[countries.BJ] +name = "Benin" +timezones = ["Porto-Novo"] +dst_enabled = false +default_tz = "Porto-Novo" + +[countries.BW] +name = "Botswana" +timezones = ["Gaborone"] +dst_enabled = false +default_tz = "Gaborone" + +[countries.BF] +name = "Burkina Faso" +timezones = ["Ouagadougou"] +dst_enabled = false +default_tz = "Ouagadougou" + +[countries.BI] +name = "Burundi" +timezones = ["Bujumbura"] +dst_enabled = false +default_tz = "Bujumbura" + +[countries.CV] +name = "Cabo Verde" +timezones = ["Praia"] +dst_enabled = false +default_tz = "Praia" + +[countries.CM] +name = "Cameroon" +timezones = ["Douala"] +dst_enabled = false +default_tz = "Douala" + +[countries.CF] +name = "Central African Republic" +timezones = ["Bangui"] +dst_enabled = false +default_tz = "Bangui" + +[countries.TD] +name = "Chad" +timezones = ["Ndjamena"] +dst_enabled = false +default_tz = "Ndjamena" + +[countries.KM] +name = "Comoros" +timezones = ["Moroni"] +dst_enabled = false +default_tz = "Moroni" + +[countries.CG] +name = "Republic of the Congo" +timezones = ["Brazzaville"] +dst_enabled = false +default_tz = "Brazzaville" + +[countries.CD] +name = "Democratic Republic of the Congo" +timezones = ["Kinshasa", "Lubumbashi"] +dst_enabled = false +default_tz = "Kinshasa" + +[countries.CI] +name = "Cote d'Ivoire" +timezones = ["Abidjan"] +dst_enabled = false +default_tz = "Abidjan" + +[countries.DJ] +name = "Djibouti" +timezones = ["Djibouti"] +dst_enabled = false +default_tz = "Djibouti" + +[countries.EG] +name = "Egypt" +timezones = ["Cairo"] +dst_enabled = true +default_tz = "Cairo" +dst_rules.rule = "egypt" + +[countries.GQ] +name = "Equatorial Guinea" +timezones = ["Malabo"] +dst_enabled = false +default_tz = "Malabo" + +[countries.ER] +name = "Eritrea" +timezones = ["Asmara"] +dst_enabled = false +default_tz = "Asmara" + +[countries.SZ] +name = "Eswatini" +timezones = ["Mbabane"] +dst_enabled = false +default_tz = "Mbabane" + +[countries.ET] +name = "Ethiopia" +timezones = ["Addis Ababa"] +dst_enabled = false +default_tz = "Addis Ababa" + +[countries.GA] +name = "Gabon" +timezones = ["Libreville"] +dst_enabled = false +default_tz = "Libreville" + +[countries.GM] +name = "Gambia" +timezones = ["Banjul"] +dst_enabled = false +default_tz = "Banjul" + +[countries.GH] +name = "Ghana" +timezones = ["Accra"] +dst_enabled = false +default_tz = "Accra" + +[countries.GN] +name = "Guinea" +timezones = ["Conakry"] +dst_enabled = false +default_tz = "Conakry" + +[countries.GW] +name = "Guinea-Bissau" +timezones = ["Bissau"] +dst_enabled = false +default_tz = "Bissau" + +[countries.KE] +name = "Kenya" +timezones = ["Nairobi"] +dst_enabled = false +default_tz = "Nairobi" + +[countries.LS] +name = "Lesotho" +timezones = ["Maseru"] +dst_enabled = false +default_tz = "Maseru" + +[countries.LR] +name = "Liberia" +timezones = ["Monrovia"] +dst_enabled = false +default_tz = "Monrovia" + +[countries.LY] +name = "Libya" +timezones = ["Tripoli"] +dst_enabled = false +default_tz = "Tripoli" + +[countries.MG] +name = "Madagascar" +timezones = ["Antananarivo"] +dst_enabled = false +default_tz = "Antananarivo" + +[countries.MW] +name = "Malawi" +timezones = ["Blantyre"] +dst_enabled = false +default_tz = "Blantyre" + +[countries.ML] +name = "Mali" +timezones = ["Bamako"] +dst_enabled = false +default_tz = "Bamako" + +[countries.MR] +name = "Mauritania" +timezones = ["Nouakchott"] +dst_enabled = false +default_tz = "Nouakchott" + +[countries.MU] +name = "Mauritius" +timezones = ["Port Louis"] +dst_enabled = false +default_tz = "Port Louis" + +[countries.MA] +name = "Morocco" +timezones = ["Casablanca", "El Aaiun"] +dst_enabled = true +default_tz = "Casablanca" +dst_rules.rule = "morocco" + +[countries.MZ] +name = "Mozambique" +timezones = ["Maputo"] +dst_enabled = false +default_tz = "Maputo" + +[countries.NA] +name = "Namibia" +timezones = ["Windhoek"] +dst_enabled = true +default_tz = "Windhoek" +dst_rules.rule = "namibia" + +[countries.NE] +name = "Niger" +timezones = ["Niamey"] +dst_enabled = false +default_tz = "Niamey" + +[countries.NG] +name = "Nigeria" +timezones = ["Lagos"] +dst_enabled = false +default_tz = "Lagos" + +[countries.RW] +name = "Rwanda" +timezones = ["Kigali"] +dst_enabled = false +default_tz = "Kigali" + +[countries.ST] +name = "Sao Tome and Principe" +timezones = ["Sao Tome"] +dst_enabled = false +default_tz = "Sao Tome" + +[countries.SN] +name = "Senegal" +timezones = ["Dakar"] +dst_enabled = false +default_tz = "Dakar" + +[countries.SC] +name = "Seychelles" +timezones = ["Victoria"] +dst_enabled = false +default_tz = "Victoria" + +[countries.SL] +name = "Sierra Leone" +timezones = ["Freetown"] +dst_enabled = false +default_tz = "Freetown" + +[countries.SO] +name = "Somalia" +timezones = ["Mogadishu"] +dst_enabled = false +default_tz = "Mogadishu" + +[countries.ZA] +name = "South Africa" +timezones = ["Johannesburg"] +dst_enabled = false +default_tz = "Johannesburg" + +[countries.SS] +name = "South Sudan" +timezones = ["Juba"] +dst_enabled = false +default_tz = "Juba" + +[countries.SD] +name = "Sudan" +timezones = ["Khartoum"] +dst_enabled = false +default_tz = "Khartoum" + +[countries.TZ] +name = "Tanzania" +timezones = ["Dar es Salaam"] +dst_enabled = false +default_tz = "Dar es Salaam" + +[countries.TG] +name = "Togo" +timezones = ["Lome"] +dst_enabled = false +default_tz = "Lome" + +[countries.TN] +name = "Tunisia" +timezones = ["Tunis"] +dst_enabled = true +default_tz = "Tunis" +dst_rules.rule = "tunisia" + +[countries.UG] +name = "Uganda" +timezones = ["Kampala"] +dst_enabled = false +default_tz = "Kampala" + +[countries.ZM] +name = "Zambia" +timezones = ["Lusaka"] +dst_enabled = false +default_tz = "Lusaka" + +[countries.ZW] +name = "Zimbabwe" +timezones = ["Harare"] +dst_enabled = false +default_tz = "Harare" + +# ============================================================================= +# ANTARCTICA +# ============================================================================= + +[countries.AQ] +name = "Antarctica" +timezones = [ + "Casey", + "Davis", + "Dumont d'Urville", + "Mawson", + "Palmer", + "Rothera", + "Syowa", + "Troll", + "Vostok" +] +dst_enabled = false +default_tz = "Casey" + +# ============================================================================= +# ASIA +# ============================================================================= + +[countries.AF] +name = "Afghanistan" +timezones = ["Kabul"] +dst_enabled = false +default_tz = "Kabul" + +[countries.AM] +name = "Armenia" +timezones = ["Yerevan"] +dst_enabled = false +default_tz = "Yerevan" + +[countries.AZ] +name = "Azerbaijan" +timezones = ["Baku"] +dst_enabled = false +default_tz = "Baku" + +[countries.BH] +name = "Bahrain" +timezones = ["Manama"] +dst_enabled = false +default_tz = "Manama" + +[countries.BD] +name = "Bangladesh" +timezones = ["Dhaka"] +dst_enabled = false +default_tz = "Dhaka" + +[countries.BT] +name = "Bhutan" +timezones = ["Thimphu"] +dst_enabled = false +default_tz = "Thimphu" + +[countries.BN] +name = "Brunei" +timezones = ["Bandar Seri Begawan"] +dst_enabled = false +default_tz = "Bandar Seri Begawan" + +[countries.KH] +name = "Cambodia" +timezones = ["Phnom Penh"] +dst_enabled = false +default_tz = "Phnom Penh" + +[countries.CN] +name = "China" +timezones = ["Shanghai", "Urumqi"] +dst_enabled = false +default_tz = "Shanghai" +note = "China uses single national timezone but Xinjiang uses Urumqi" + +[countries.CY] +name = "Cyprus" +timezones = ["Nicosia", "Famagusta"] +dst_enabled = true +default_tz = "Nicosia" +note = "Northern Cyprus uses different DST rules" + +[countries.GE] +name = "Georgia" +timezones = ["Tbilisi"] +dst_enabled = false +default_tz = "Tbilisi" + +[countries.HK] +name = "Hong Kong" +timezones = ["Hong Kong"] +dst_enabled = false +default_tz = "Hong Kong" +note = "DST ended 2019" + +[countries.IN] +name = "India" +timezones = ["Kolkata"] +dst_enabled = false +default_tz = "Kolkata" + +[countries.ID] +name = "Indonesia" +timezones = ["Jakarta", "Pontianak", "Makassar", "Jayapura"] +dst_enabled = false +default_tz = "Jakarta" + +[countries.IR] +name = "Iran" +timezones = ["Tehran"] +dst_enabled = true +default_tz = "Tehran" +dst_rules.rule = "iran" + +[countries.IQ] +name = "Iraq" +timezones = ["Baghdad"] +dst_enabled = false +default_tz = "Baghdad" + +[countries.IL] +name = "Israel" +timezones = ["Jerusalem"] +dst_enabled = true +default_tz = "Jerusalem" +dst_rules.rule = "israel" + +[countries.JP] +name = "Japan" +timezones = ["Tokyo"] +dst_enabled = false +default_tz = "Tokyo" + +[countries.JO] +name = "Jordan" +timezones = ["Amman"] +dst_enabled = true +default_tz = "Amman" +dst_rules.rule = "jordan" + +[countries.KZ] +name = "Kazakhstan" +timezones = ["Almaty", "Qyzylorda", "Aqtobe", "Atyrau", "Oral"] +dst_enabled = false +default_tz = "Almaty" + +[countries.KW] +name = "Kuwait" +timezones = ["Kuwait"] +dst_enabled = false +default_tz = "Kuwait" + +[countries.KG] +name = "Kyrgyzstan" +timezones = ["Bishkek"] +dst_enabled = false +default_tz = "Bishkek" + +[countries.LA] +name = "Laos" +timezones = ["Vientiane"] +dst_enabled = false +default_tz = "Vientiane" + +[countries.LB] +name = "Lebanon" +timezones = ["Beirut"] +dst_enabled = true +default_tz = "Beirut" +dst_rules.rule = "lebanon" + +[countries.MO] +name = "Macau" +timezones = ["Macau"] +dst_enabled = false +default_tz = "Macau" +note = "DST ended" + +[countries.MY] +name = "Malaysia" +timezones = ["Kuala Lumpur", "Kuching"] +dst_enabled = false +default_tz = "Kuala Lumpur" + +[countries.MV] +name = "Maldives" +timezones = ["Male"] +dst_enabled = false +default_tz = "Male" + +[countries.MN] +name = "Mongolia" +timezones = ["Ulaanbaatar", "Hovd", "Choibalsan"] +dst_enabled = false +default_tz = "Ulaanbaatar" + +[countries.MM] +name = "Myanmar" +timezones = ["Yangon"] +dst_enabled = false +default_tz = "Yangon" + +[countries.NP] +name = "Nepal" +timezones = ["Kathmandu"] +dst_enabled = false +default_tz = "Kathmandu" + +[countries.KP] +name = "North Korea" +timezones = ["Pyongyang"] +dst_enabled = false +default_tz = "Pyongyang" + +[countries.MK] +name = "North Macedonia" +timezones = ["Skopje"] +dst_enabled = true +default_tz = "Skopje" +dst_rules.rule = "eu" + +[countries.OM] +name = "Oman" +timezones = ["Muscat"] +dst_enabled = false +default_tz = "Muscat" + +[countries.PK] +name = "Pakistan" +timezones = ["Karachi"] +dst_enabled = false +default_tz = "Karachi" + +[countries.PS] +name = "Palestine" +timezones = ["Gaza", "Hebron"] +dst_enabled = true +default_tz = "Gaza" +dst_rules.rule = "palestine" + +[countries.PH] +name = "Philippines" +timezones = ["Manila"] +dst_enabled = false +default_tz = "Manila" + +[countries.QA] +name = "Qatar" +timezones = ["Doha"] +dst_enabled = false +default_tz = "Doha" + +[countries.SA] +name = "Saudi Arabia" +timezones = ["Riyadh"] +dst_enabled = false +default_tz = "Riyadh" + +[countries.SG] +name = "Singapore" +timezones = ["Singapore"] +dst_enabled = false +default_tz = "Singapore" + +[countries.KR] +name = "South Korea" +timezones = ["Seoul"] +dst_enabled = false +default_tz = "Seoul" + +[countries.LK] +name = "Sri Lanka" +timezones = ["Colombo"] +dst_enabled = false +default_tz = "Colombo" + +[countries.SY] +name = "Syria" +timezones = ["Damascus"] +dst_enabled = true +default_tz = "Damascus" +dst_rules.rule = "syria" + +[countries.TW] +name = "Taiwan" +timezones = ["Taipei"] +dst_enabled = false +default_tz = "Taipei" +note = "DST ended 1979" + +[countries.TJ] +name = "Tajikistan" +timezones = ["Dushanbe"] +dst_enabled = false +default_tz = "Dushanbe" + +[countries.TH] +name = "Thailand" +timezones = ["Bangkok"] +dst_enabled = false +default_tz = "Bangkok" + +[countries.TL] +name = "Timor-Leste" +timezones = ["Dili"] +dst_enabled = false +default_tz = "Dili" + +[countries.TM] +name = "Turkmenistan" +timezones = ["Ashgabat"] +dst_enabled = false +default_tz = "Ashgabat" + +[countries.AE] +name = "United Arab Emirates" +timezones = ["Dubai"] +dst_enabled = false +default_tz = "Dubai" + +[countries.UZ] +name = "Uzbekistan" +timezones = ["Tashkent", "Samarkand"] +dst_enabled = false +default_tz = "Tashkent" + +[countries.VN] +name = "Vietnam" +timezones = ["Ho Chi Minh City"] +dst_enabled = false +default_tz = "Ho Chi Minh City" + +[countries.YE] +name = "Yemen" +timezones = ["Sanaa"] +dst_enabled = false +default_tz = "Sanaa" + +# ============================================================================= +# EUROPE +# ============================================================================= + +[countries.AL] +name = "Albania" +timezones = ["Tirane"] +dst_enabled = true +default_tz = "Tirane" +dst_rules.rule = "eu" + +[countries.AD] +name = "Andorra" +timezones = ["Andorra"] +dst_enabled = true +default_tz = "Andorra" +dst_rules.rule = "eu" + +[countries.AT] +name = "Austria" +timezones = ["Vienna"] +dst_enabled = true +default_tz = "Vienna" +dst_rules.rule = "eu" + +[countries.BY] +name = "Belarus" +timezones = ["Minsk"] +dst_enabled = false +default_tz = "Minsk" + +[countries.BE] +name = "Belgium" +timezones = ["Brussels"] +dst_enabled = true +default_tz = "Brussels" +dst_rules.rule = "eu" + +[countries.BA] +name = "Bosnia and Herzegovina" +timezones = ["Sarajevo"] +dst_enabled = true +default_tz = "Sarajevo" +dst_rules.rule = "eu" + +[countries.BG] +name = "Bulgaria" +timezones = ["Sofia"] +dst_enabled = true +default_tz = "Sofia" +dst_rules.rule = "eu" + +[countries.HR] +name = "Croatia" +timezones = ["Zagreb"] +dst_enabled = true +default_tz = "Zagreb" +dst_rules.rule = "eu" + +[countries.CZ] +name = "Czech Republic" +timezones = ["Prague"] +dst_enabled = true +default_tz = "Prague" +dst_rules.rule = "eu" + +[countries.DK] +name = "Denmark" +timezones = ["Copenhagen"] +dst_enabled = true +default_tz = "Copenhagen" +dst_rules.rule = "eu" + +[countries.EE] +name = "Estonia" +timezones = ["Tallinn"] +dst_enabled = true +default_tz = "Tallinn" +dst_rules.rule = "eu" + +[countries.FI] +name = "Finland" +timezones = ["Helsinki"] +dst_enabled = true +default_tz = "Helsinki" +dst_rules.rule = "eu" + +[countries.FR] +name = "France" +timezones = ["Paris"] +dst_enabled = true +default_tz = "Paris" +dst_rules.rule = "eu" + +[countries.DE] +name = "Germany" +timezones = ["Berlin"] +dst_enabled = true +default_tz = "Berlin" +dst_rules.rule = "eu" + +[countries.GR] +name = "Greece" +timezones = ["Athens"] +dst_enabled = true +default_tz = "Athens" +dst_rules.rule = "eu" + +[countries.HU] +name = "Hungary" +timezones = ["Budapest"] +dst_enabled = true +default_tz = "Budapest" +dst_rules.rule = "eu" + +[countries.IS] +name = "Iceland" +timezones = ["Reykjavik"] +dst_enabled = false +default_tz = "Reykjavik" + +[countries.IE] +name = "Ireland" +timezones = ["Dublin"] +dst_enabled = true +default_tz = "Dublin" +dst_rules.rule = "eu" + +[countries.IT] +name = "Italy" +timezones = ["Rome"] +dst_enabled = true +default_tz = "Rome" +dst_rules.rule = "eu" + +[countries.XK] +name = "Kosovo" +timezones = ["Pristina"] +dst_enabled = true +default_tz = "Pristina" +dst_rules.rule = "eu" + +[countries.LV] +name = "Latvia" +timezones = ["Riga"] +dst_enabled = true +default_tz = "Riga" +dst_rules.rule = "eu" + +[countries.LI] +name = "Liechtenstein" +timezones = ["Vaduz"] +dst_enabled = true +default_tz = "Vaduz" +dst_rules.rule = "eu" + +[countries.LT] +name = "Lithuania" +timezones = ["Vilnius"] +dst_enabled = true +default_tz = "Vilnius" +dst_rules.rule = "eu" + +[countries.LU] +name = "Luxembourg" +timezones = ["Luxembourg"] +dst_enabled = true +default_tz = "Luxembourg" +dst_rules.rule = "eu" + +[countries.MT] +name = "Malta" +timezones = ["Valletta"] +dst_enabled = true +default_tz = "Valletta" +dst_rules.rule = "eu" + +[countries.MD] +name = "Moldova" +timezones = ["Chisinau"] +dst_enabled = true +default_tz = "Chisinau" +dst_rules.rule = "eu" + +[countries.MC] +name = "Monaco" +timezones = ["Monaco"] +dst_enabled = true +default_tz = "Monaco" +dst_rules.rule = "eu" + +[countries.ME] +name = "Montenegro" +timezones = ["Podgorica"] +dst_enabled = true +default_tz = "Podgorica" +dst_rules.rule = "eu" + +[countries.NL] +name = "Netherlands" +timezones = ["Amsterdam"] +dst_enabled = true +default_tz = "Amsterdam" +dst_rules.rule = "eu" + +[countries.NO] +name = "Norway" +timezones = ["Oslo"] +dst_enabled = true +default_tz = "Oslo" +dst_rules.rule = "eu" + +[countries.PL] +name = "Poland" +timezones = ["Warsaw"] +dst_enabled = true +default_tz = "Warsaw" +dst_rules.rule = "eu" + +[countries.PT] +name = "Portugal" +timezones = ["Lisbon", "Funchal", "Ponta Delgada"] +dst_enabled = true +default_tz = "Lisbon" +dst_rules.rule = "eu" +note = "Madeira follows EU rules; Azores has separate rules" + +[countries.RO] +name = "Romania" +timezones = ["Bucharest"] +dst_enabled = true +default_tz = "Bucharest" +dst_rules.rule = "eu" + +[countries.RU] +name = "Russia" +timezones = [ + "Kaliningrad", + "Moscow", + "Volgograd", + "Samara", + "Yekaterinburg", + "Omsk", + "Novosibirsk", + "Krasnoyarsk", + "Irkutsk", + "Yakutsk", + "Vladivostok", + "Magadan", + "Sakhalin", + "Srednekolymsk", + "Petropavlovsk-Kamchatsky", + "Anadyr" +] +dst_enabled = false +default_tz = "Moscow" +note = "Russia abolished DST in 2014; all zones use permanent offsets" + +[countries.SM] +name = "San Marino" +timezones = ["San Marino"] +dst_enabled = true +default_tz = "San Marino" +dst_rules.rule = "eu" + +[countries.RS] +name = "Serbia" +timezones = ["Belgrade"] +dst_enabled = true +default_tz = "Belgrade" +dst_rules.rule = "eu" + +[countries.SK] +name = "Slovakia" +timezones = ["Bratislava"] +dst_enabled = true +default_tz = "Bratislava" +dst_rules.rule = "eu" + +[countries.SI] +name = "Slovenia" +timezones = ["Ljubljana"] +dst_enabled = true +default_tz = "Ljubljana" +dst_rules.rule = "eu" + +[countries.ES] +name = "Spain" +timezones = ["Madrid", "Ceuta", "Santa Cruz de Tenerife"] +dst_enabled = true +default_tz = "Madrid" +dst_rules.rule = "eu" +note = "Canary Islands follow EU rules" + +[countries.SE] +name = "Sweden" +timezones = ["Stockholm"] +dst_enabled = true +default_tz = "Stockholm" +dst_rules.rule = "eu" + +[countries.CH] +name = "Switzerland" +timezones = ["Zurich"] +dst_enabled = true +default_tz = "Zurich" +dst_rules.rule = "eu" + +[countries.TR] +name = "Turkey" +timezones = ["Istanbul"] +dst_enabled = false +default_tz = "Istanbul" +note = "Turkey abolished DST in 2016; uses permanent +3 offset" + +[countries.UA] +name = "Ukraine" +timezones = ["Kiev", "Uzhgorod", "Zaporozhye"] +dst_enabled = true +default_tz = "Kiev" +dst_rules.rule = "eu" + +[countries.GB] +name = "United Kingdom" +timezones = ["London"] +dst_enabled = true +default_tz = "London" +dst_rules.rule = "eu" + +[countries.VA] +name = "Vatican City" +timezones = ["Vatican"] +dst_enabled = true +default_tz = "Vatican" +dst_rules.rule = "eu" + +# ============================================================================= +# NORTH AMERICA +# ============================================================================= + +[countries.AG] +name = "Antigua and Barbuda" +timezones = ["St. John's"] +dst_enabled = false +default_tz = "St. John's" + +[countries.BS] +name = "Bahamas" +timezones = ["Nassau"] +dst_enabled = true +default_tz = "Nassau" +dst_rules.rule = "us" + +[countries.BB] +name = "Barbados" +timezones = ["Bridgetown"] +dst_enabled = false +default_tz = "Bridgetown" +note = "DST ended 1980" + +[countries.BZ] +name = "Belize" +timezones = ["Belmopan"] +dst_enabled = false +default_tz = "Belmopan" + +[countries.CA] +name = "Canada" +timezones = [ + "St. John's", + "Halifax", + "Charlottetown", + "Toronto", + "Iqaluit", + "Winnipeg", + "Regina", + "Edmonton", + "Vancouver", + "Dawson Creek", + "Whitehorse", + "Dawson" +] +dst_enabled = true +default_tz = "Toronto" +dst_rules.rule = "canada" +note = "Several regions don't observe DST: Saskatchewan (most), parts of Ontario, British Columbia" + +[countries.CR] +name = "Costa Rica" +timezones = ["San Jose"] +dst_enabled = false +default_tz = "San Jose" + +[countries.CU] +name = "Cuba" +timezones = ["Havana"] +dst_enabled = true +default_tz = "Havana" + +[countries.DM] +name = "Dominica" +timezones = ["Roseau"] +dst_enabled = false +default_tz = "Roseau" + +[countries.DO] +name = "Dominican Republic" +timezones = ["Santo Domingo"] +dst_enabled = false +default_tz = "Santo Domingo" + +[countries.SV] +name = "El Salvador" +timezones = ["San Salvador"] +dst_enabled = false +default_tz = "San Salvador" + +[countries.GD] +name = "Grenada" +timezones = ["St. George's"] +dst_enabled = false +default_tz = "St. George's" + +[countries.GT] +name = "Guatemala" +timezones = ["Guatemala City"] +dst_enabled = false +default_tz = "Guatemala City" + +[countries.HT] +name = "Haiti" +timezones = ["Port-au-Prince"] +dst_enabled = true +default_tz = "Port-au-Prince" + +[countries.HN] +name = "Honduras" +timezones = ["Tegucigalpa"] +dst_enabled = false +default_tz = "Tegucigalpa" + +[countries.JM] +name = "Jamaica" +timezones = ["Kingston"] +dst_enabled = false +default_tz = "Kingston" + +[countries.MX] +name = "Mexico" +timezones = [ + "Mexico City", + "Cancun", + "Merida", + "Monterrey", + "Tijuana", + "Chihuahua", + "Hermosillo", + "Mazatlan" +] +dst_enabled = true +default_tz = "Mexico City" +note = "Border regions follow US DST; most of Mexico follows Mexico-specific rules" + +[countries.NI] +name = "Nicaragua" +timezones = ["Managua"] +dst_enabled = false +default_tz = "Managua" + +[countries.PA] +name = "Panama" +timezones = ["Panama City"] +dst_enabled = false +default_tz = "Panama City" + +[countries.KN] +name = "Saint Kitts and Nevis" +timezones = ["Basseterre"] +dst_enabled = false +default_tz = "Basseterre" + +[countries.LC] +name = "Saint Lucia" +timezones = ["Castries"] +dst_enabled = false +default_tz = "Castries" + +[countries.VC] +name = "Saint Vincent and the Grenadines" +timezones = ["Kingstown"] +dst_enabled = false +default_tz = "Kingstown" + +[countries.TT] +name = "Trinidad and Tobago" +timezones = ["Port of Spain"] +dst_enabled = false +default_tz = "Port of Spain" + +[countries.US] +name = "United States" +timezones = [ + "New York", + "Detroit", + "Louisville", + "Indianapolis", + "Vincennes", + "Winamac", + "Marengo", + "Petersburg", + "Knox", + "Tell City", + "Posen", + "Chicago", + "Menominee", + "Center", + "New Salem", + "Beulah", + "Denver", + "Boise", + "Phoenix", + "Los Angeles", + "Anchorage", + "Juneau", + "Sitka", + "Metlakatla", + "Yakutat", + "Nome", + "Adak", + "Honolulu" +] +dst_enabled = true +default_tz = "New York" +dst_rules.rule = "us" +note = "Arizona and Hawaii don't observe DST; some Indiana counties non-standard" + +# ============================================================================= +# OCEANIA +# ============================================================================= + +[countries.AU] +name = "Australia" +timezones = [ + "Lord Howe Island", + "Hobart", + "Currie", + "Melbourne", + "Sydney", + "Broken Hill", + "Darwin", + "Perth", + "Eucla", + "Adelaide", + "Brisbane", + "Lindeman" +] +dst_enabled = true +default_tz = "Sydney" +note = "Queensland, Northern Territory, Western Australia don't observe DST" + +[countries.FJ] +name = "Fiji" +timezones = ["Suva"] +dst_enabled = true +default_tz = "Suva" +dst_rules.rule = "nz" + +[countries.NZ] +name = "New Zealand" +timezones = ["Auckland", "Chatham Islands"] +dst_enabled = true +default_tz = "Auckland" +dst_rules.rule = "nz" + +[countries.PG] +name = "Papua New Guinea" +timezones = ["Port Moresby"] +dst_enabled = false +default_tz = "Port Moresby" + +[countries.WS] +name = "Samoa" +timezones = ["Apia"] +dst_enabled = false +default_tz = "Apia" + +[countries.SB] +name = "Solomon Islands" +timezones = ["Honiara"] +dst_enabled = false +default_tz = "Honiara" + +[countries.TO] +name = "Tonga" +timezones = ["Nukualofa"] +dst_enabled = false +default_tz = "Nukualofa" + +[countries.VU] +name = "Vanuatu" +timezones = ["Port Vila"] +dst_enabled = false +default_tz = "Port Vila" + +# ============================================================================= +# SOUTH AMERICA +# ============================================================================= + +[countries.AR] +name = "Argentina" +timezones = [ + "Buenos Aires", + "Cordoba", + "Salta", + "Jujuy", + "La Rioja", + "San Juan", + "Mendoza", + "San Luis", + "Tucuman", + "Catamarca", + "ComodRivadavia", + "Ushuaia" +] +dst_enabled = false +default_tz = "Buenos Aires" + +[countries.BO] +name = "Bolivia" +timezones = ["La Paz"] +dst_enabled = false +default_tz = "La Paz" + +[countries.BR] +name = "Brazil" +timezones = [ + "Araguaina", + "Bahia", + "Belem", + "Boa Vista", + "Campo Grande", + "Cuiaba", + "Fortaleza", + "Maceio", + "Manaus", + "Noronha", + "Recife", + "Rio Branco", + "Santarem", + "Sao Paulo" +] +dst_enabled = true +default_tz = "Sao Paulo" +dst_rules.rule = "br" +note = "Some states don't observe DST: Amazonas, Para, Roraima, Amapa, Acre" + +[countries.CL] +name = "Chile" +timezones = ["Santiago", "Easter Island"] +dst_enabled = true +default_tz = "Santiago" +dst_rules.rule = "cl" +note = "Easter Island has separate rules" + +[countries.CO] +name = "Colombia" +timezones = ["Bogota"] +dst_enabled = false +default_tz = "Bogota" + +[countries.EC] +name = "Ecuador" +timezones = ["Guayaquil", "Galapagos"] +dst_enabled = false +default_tz = "Guayaquil" + +[countries.GY] +name = "Guyana" +timezones = ["Georgetown"] +dst_enabled = false +default_tz = "Georgetown" + +[countries.PY] +name = "Paraguay" +timezones = ["Asuncion"] +dst_enabled = true +default_tz = "Asuncion" +dst_rules.rule = "paraguay" + +[countries.PE] +name = "Peru" +timezones = ["Lima"] +dst_enabled = false +default_tz = "Lima" + +[countries.SR] +name = "Suriname" +timezones = ["Paramaribo"] +dst_enabled = false +default_tz = "Paramaribo" + +[countries.UY] +name = "Uruguay" +timezones = ["Montevideo"] +dst_enabled = true +default_tz = "Montevideo" +dst_rules.rule = "eu" + +[countries.VE] +name = "Venezuela" +timezones = ["Caracas"] +dst_enabled = false +default_tz = "Caracas" + +# ============================================================================= +# CARIBBEAN +# ============================================================================= + +[countries.AI] +name = "Anguilla" +timezones = ["The Valley"] +dst_enabled = false +default_tz = "The Valley" + +[countries.AW] +name = "Aruba" +timezones = ["Oranjestad"] +dst_enabled = false +default_tz = "Oranjestad" + +[countries.BM] +name = "Bermuda" +timezones = ["Hamilton"] +dst_enabled = true +default_tz = "Hamilton" +dst_rules.rule = "us" + +[countries.VG] +name = "British Virgin Islands" +timezones = ["Road Town"] +dst_enabled = false +default_tz = "Road Town" + +[countries.KY] +name = "Cayman Islands" +timezones = ["George Town"] +dst_enabled = false +default_tz = "George Town" + +[countries.CW] +name = "Curacao" +timezones = ["Willemstad"] +dst_enabled = false +default_tz = "Willemstad" + +[countries.FK] +name = "Falkland Islands" +timezones = ["Stanley"] +dst_enabled = true +default_tz = "Stanley" +dst_rules.rule = "falklands" + +[countries.GL] +name = "Greenland" +timezones = [ + "Danmarkshavn", + "Ittoqqortoormiit", + "Thule", + "Nuuk" +] +dst_enabled = true +default_tz = "Nuuk" +note = "Most of Greenland doesn't observe DST; Ittoqqortoormiit follows EU rules" + +[countries.GP] +name = "Guadeloupe" +timezones = ["Basse-Terre"] +dst_enabled = true +default_tz = "Basse-Terre" +dst_rules.rule = "eu" + +[countries.MQ] +name = "Martinique" +timezones = ["Fort-de-France"] +dst_enabled = true +default_tz = "Fort-de-France" +dst_rules.rule = "eu" + +[countries.MS] +name = "Montserrat" +timezones = ["Brades"] +dst_enabled = false +default_tz = "Brades" + +[countries.PR] +name = "Puerto Rico" +timezones = ["San Juan"] +dst_enabled = false +default_tz = "San Juan" + +[countries.BL] +name = "Saint Barthelemy" +timezones = ["Gustavia"] +dst_enabled = true +default_tz = "Gustavia" +dst_rules.rule = "eu" + +[countries.MF] +name = "Saint Martin" +timezones = ["Marigot"] +dst_enabled = true +default_tz = "Marigot" +dst_rules.rule = "eu" + +[countries.SX] +name = "Sint Maarten" +timezones = ["Philipsburg"] +dst_enabled = false +default_tz = "Philipsburg" + +[countries.TC] +name = "Turks and Caicos Islands" +timezones = ["Cockburn Town"] +dst_enabled = true +default_tz = "Cockburn Town" +dst_rules.rule = "us" + +[countries.VI] +name = "US Virgin Islands" +timezones = ["Charlotte Amalie"] +dst_enabled = false +default_tz = "Charlotte Amalie" + +# ============================================================================= +# DEPENDENCIES AND TERRITORIES +# ============================================================================= + +[countries.AS] +name = "American Samoa" +timezones = ["Pago Pago"] +dst_enabled = false +default_tz = "Pago Pago" + +[countries.IO] +name = "British Indian Ocean Territory" +timezones = ["Diego Garcia"] +dst_enabled = false +default_tz = "Diego Garcia" + +[countries.CX] +name = "Christmas Island" +timezones = ["Flying Fish Cove"] +dst_enabled = false +default_tz = "Flying Fish Cove" + +[countries.CC] +name = "Cocos (Keeling) Islands" +timezones = ["West Island"] +dst_enabled = false +default_tz = "West Island" + +[countries.CK] +name = "Cook Islands" +timezones = ["Avarua"] +dst_enabled = false +default_tz = "Avarua" + +[countries.GG] +name = "Guernsey" +timezones = ["St. Peter Port"] +dst_enabled = true +default_tz = "St. Peter Port" +dst_rules.rule = "eu" + +[countries.IM] +name = "Isle of Man" +timezones = ["Douglas"] +dst_enabled = true +default_tz = "Douglas" +dst_rules.rule = "eu" + +[countries.JE] +name = "Jersey" +timezones = ["St. Helier"] +dst_enabled = true +default_tz = "St. Helier" +dst_rules.rule = "eu" + +[countries.NC] +name = "New Caledonia" +timezones = ["Noumea"] +dst_enabled = false +default_tz = "Noumea" + +[countries.NF] +name = "Norfolk Island" +timezones = ["Kingston"] +dst_enabled = false +default_tz = "Kingston" + +[countries.NU] +name = "Niue" +timezones = ["Alofi"] +dst_enabled = false +default_tz = "Alofi" + +[countries.PN] +name = "Pitcairn Islands" +timezones = ["Adamstown"] +dst_enabled = false +default_tz = "Adamstown" + +[countries.PF] +name = "French Polynesia" +timezones = ["Papeete", "Taiohae", "Gambier"] +dst_enabled = false +default_tz = "Papeete" + +[countries.PG_guam] +name = "Guam" +timezones = ["Hagatna"] +dst_enabled = false +default_tz = "Hagatna" + +[countries.PW] +name = "Palau" +timezones = ["Ngerulmud"] +dst_enabled = false +default_tz = "Ngerulmud" + +[countries.PM] +name = "Saint Pierre and Miquelon" +timezones = ["St. Pierre"] +dst_enabled = true +default_tz = "St. Pierre" +dst_rules.rule = "us" + +[countries.SJ] +name = "Svalbard and Jan Mayen" +timezones = ["Longyearbyen"] +dst_enabled = true +default_tz = "Longyearbyen" +dst_rules.rule = "eu" + +[countries.SH] +name = "Saint Helena" +timezones = ["Jamestown"] +dst_enabled = false +default_tz = "Jamestown" + +[countries.TK] +name = "Tokelau" +timezones = ["Fakaofo"] +dst_enabled = false +default_tz = "Fakaofo" + +[countries.TV] +name = "Tuvalu" +timezones = ["Funafuti"] +dst_enabled = false +default_tz = "Funafuti" + +[countries.WF] +name = "Wallis and Futuna" +timezones = ["Mata-Utu"] +dst_enabled = false +default_tz = "Mata-Utu"