Advertisement
Seniru_Pasan

worldclock.py

May 1st, 2020 (edited)
857
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 31.38 KB | None | 0 0
  1. import json
  2. import re
  3. from datetime import datetime, timezone, timedelta
  4.  
  5. runner = input()
  6. stdin:str = input().upper()[1:-1]
  7.  
  8. timezones = {
  9.  
  10.     "AD": {
  11.         "country": "Europe",
  12.         "zones": [
  13.             {"zone": "Andorra", "utc": 2}
  14.         ]
  15.     },
  16.     "AE": {
  17.         "country": "Asia",
  18.         "zones": [
  19.             {"zone": "Dubai", "utc": 4}
  20.         ]
  21.     },
  22.     "AF": {
  23.         "country": "Asia",
  24.         "zones": [
  25.             {"zone": "Kabul", "utc": [4, 30]}
  26.         ]
  27.     },
  28.     "AG": {
  29.         "country": "America",
  30.         "zones": [
  31.             {"zone": "Antiga", "utc": -4}
  32.         ]
  33.     },
  34.     "AI": {
  35.         "country": "America",
  36.         "zones": [
  37.             {"zone": "Anguilla", "utc": -4}
  38.         ]
  39.     },
  40.     "AL": {
  41.         "country": "Europe",
  42.         "zones": [
  43.             {"zone": "Tirane", "utc": 2}
  44.         ]
  45.     },
  46.     "AM": {
  47.         "country": "Asia",
  48.         "zones": [
  49.             {"zone": "Yerevan", "utc": 4}
  50.         ]
  51.     },
  52.     "AO": {
  53.         "country": "Africa",
  54.         "zones": [
  55.             {"zone": "Luanda", "utc": 1}
  56.         ]
  57.     },
  58.     "AQ": {
  59.         "country": "Antarctica",
  60.         "zones": [
  61.             {"zone": "Troll", "utc": 2},
  62.             {"zone": "Syowa", "utc": 3},
  63.             {"zone": "Mawson", "utc": 5},
  64.             {"zone": "Vostok", "utc": 6},
  65.             {"zone": "Davis", "utc": 7},
  66.             {"zone": "DumontDUrville", "utc": 10},
  67.             {"zone": "Casey", "utc": 11},
  68.             {"zone": "McMurdo", "utc": 13},
  69.             {"zone": "Palmer", "utc": -3},
  70.             {"zone": "Rothera", "utc": -3}
  71.         ]
  72.     },
  73.     "AR": {
  74.         "country": "America/Argentina",
  75.         "zones": [
  76.             {"zone": "Buenos_Aires", "utc": -3},
  77.             {"zone": "Catamarca", "utc": -3},
  78.             {"zone": "ComodRivadavia", "utc": -3},
  79.             {"zone": "Cordoba", "utc": -3},
  80.             {"zone": "Jujuy", "utc": -3},
  81.             {"zone": "La_Rioja", "utc": -3},
  82.             {"zone": "Mendoza", "utc": -3},
  83.             {"zone": "Rio_Gallegos", "utc": -3},
  84.             {"zone": "Salta", "utc": -3},
  85.             {"zone": "San_Juan", "utc": -3},
  86.             {"zone": "San_Luis", "utc": -3},
  87.             {"zone": "Tucuman", "utc": -3},
  88.             {"zone": "Ushuaia", "utc": -3}
  89.         ]
  90.     },
  91.     "AS": {
  92.         "country": "Pacific",
  93.         "zones": [
  94.             {"zone": "Pago_Pago", "utc": 0}
  95.         ]
  96.     },
  97.     "AT": {
  98.         "country": "Europe",
  99.         "zones": [
  100.             {"zone": "Vienna", "utc": 2}
  101.         ]
  102.     },
  103.     "AU": {
  104.         "country": "Australia/Antarctica",
  105.         "zones": [
  106.             {"zone": "Perth", "utc": 8},
  107.             {"zone": "Eucla", "utc": [8, 45]},
  108.             {"zone": "Darwin", "utc": [9, 30]},
  109.             {"zone": "Brisbane", "utc": 10},
  110.             {"zone": "Vladivostok", "utc": 10},
  111.             {"zone": "Brisbane", "utc": 10},
  112.             {"zone": "Lindeman", "utc": 10},
  113.             {"zone": "Adelaide", "utc": [10, 30]},
  114.             {"zone": "Broken_Hill", "utc": [10, 30]},
  115.             {"zone": "Lord_Howe", "utc": 11},
  116.             {"zone": "Currie", "utc": 11},
  117.             {"zone": "Hobart", "utc": 11},
  118.             {"zone": "Melbourne", "utc": 11},
  119.             {"zone": "Macquarie (Antarctica)", "utc": 11},
  120.             {"zone": "Sydney", "utc": 11},
  121.         ]
  122.     },
  123.     "AW": {
  124.         "country": "America",
  125.         "zones": [
  126.             {"zone": "Aruba", "utc": -4}
  127.         ]
  128.     },
  129.     "AX": {
  130.         "country": "Europe",
  131.         "zones": [
  132.             {"zone": "Mariehamn", "utc": 3}
  133.         ]
  134.     },
  135.     "AZ": {
  136.         "country": "Asia",
  137.         "zones": [
  138.             {"zone": "Baku", "utc": 4}
  139.         ]
  140.     },
  141.     "BA": {
  142.         "country": "Europe",
  143.         "zones": [
  144.             {"zone": "Sarajevo", "utc": 0}
  145.         ]
  146.     },
  147.     "BB": {
  148.         "country": "America",
  149.         "zones": [
  150.             {"zone": "Barbados", "utc": -4}
  151.         ]
  152.     },
  153.     "BD": {
  154.         "country": "Asia",
  155.         "zones": [
  156.             {"zone": "Dhaka", "utc": 6}
  157.         ]
  158.     },
  159.     "BE": {
  160.         "country": "Europe",
  161.         "zones": [
  162.             {"zone": "Brussels", "utc": 2}
  163.         ]      
  164.     },
  165.     "BF": {
  166.         "country": "Africa",
  167.         "zones": [
  168.             {"zone": "Ouagadougou", "utc": 0}
  169.         ]
  170.     },
  171.     "BG": {
  172.         "country": "Europe",
  173.         "zones": [
  174.             {"zone": "Sofia", "utc": 3}
  175.         ]
  176.     },
  177.     "BH": {
  178.         "country": "Asia",
  179.         "zones": [
  180.             {"zone": "Bahrain", "utc": 3}
  181.         ]
  182.     },
  183.     "BI": {
  184.         "country": "Africa",
  185.         "zones": [
  186.             {"zone": "Bujumbura", "utc": 2}
  187.         ]
  188.     },
  189.     "BJ": {
  190.         "country": "Africa",
  191.         "zones": [
  192.             {"zone": "Porto-Novo", "utc": 1}
  193.         ]      
  194.     },
  195.     "BL": {
  196.         "country": "America",
  197.         "zones": [
  198.             {"zone": "St_Barthelemy", "utc": -4}
  199.         ]
  200.     },
  201.     "BM": {
  202.         "country": "America",
  203.         "zones": [
  204.             {"zone": "Bermuda", "utc": -3}
  205.         ]
  206.     },
  207.     "BN": {
  208.         "country": "Asia",
  209.         "zones": [
  210.             {"zone": "Brunei", "utc": 8}
  211.         ]
  212.     },
  213.     "BO": {
  214.         "country": "America",
  215.         "zones": [
  216.             {"zone": "La_Paz", "utc": -4}
  217.         ]
  218.     },
  219.     "BQ": {
  220.         "country": "America",
  221.         "zones": [
  222.             {"zone": "Kralendijk", "utc": -4}
  223.         ]
  224.     },
  225.     "BR": {
  226.         "country": "America",
  227.         "zones": [
  228.             {"zone": "Noronha", "utc": -2},
  229.             {"zone": "Araguaina", "utc": -3},
  230.             {"zone": "Bahia", "utc": -3},
  231.             {"zone": "Belem", "utc": -3},
  232.             {"zone": "Maceio", "utc": -3},
  233.             {"zone": "Recife", "utc": -3},
  234.             {"zone": "Santarem", "utc": -3},
  235.             {"zone": "Sao_Paulo", "utc": -3},
  236.             {"zone": "Campo_Grande", "utc": -3},
  237.             {"zone": "Boa_Vista", "utc": -4},
  238.             {"zone": "Cuiaba", "utc": -4},
  239.             {"zone": "Manaus", "utc": -4},
  240.             {"zone": "Porto_Velho", "utc": -4},
  241.             {"zone": "Eirunepe", "utc": -5},
  242.             {"zone": "Rio_Branco", "utc": -5}
  243.         ]
  244.     },
  245.     "BS": {
  246.         "country": "America",
  247.         "zones": [
  248.             {"zone": "Nassau", "utc": -4}
  249.         ]
  250.     },
  251.     "BT": {
  252.         "country": "Asia",
  253.         "zones": [
  254.             {"zone": "Thimphu", "utc": 6}
  255.         ]
  256.     },
  257.     "BW": {
  258.         "country": "Africa",
  259.         "zones": [
  260.             {"zone": "Gaborone", "utc": 2}
  261.         ]
  262.     },
  263.     "BY": {
  264.         "country": "",
  265.         "zones": [
  266.             {"zone": "", "utc": 0}
  267.         ]
  268.     },
  269.     "BZ": {
  270.         "country": "America",
  271.         "zones": [
  272.             {"zone": "Belize", "utc": -6}
  273.         ]
  274.     },
  275.     "CA": {
  276.         "country": "America",
  277.         "zones": [
  278.             {"zone": "St_Johns", "utc": [-2, -30]},
  279.             {"zone": "Glace_Bay", "utc": -3},
  280.             {"zone": "Goose_Bay", "utc": -3},
  281.             {"zone": "Halifax", "utc": -3},
  282.             {"zone": "Moncton", "utc": -3},
  283.             {"zone": "Blanc-Sablon and Iqaluit", "utc": -4},
  284.             {"zone": "Nipigon", "utc": -4},
  285.             {"zone": "Pangnirtung", "utc": -4},
  286.             {"zone": "Thunder_Bay", "utc": -4},
  287.             {"zone": "Toronto", "utc": -4},
  288.             {"zone": "Atikokan", "utc": -5},
  289.             {"zone": "Rainy_River", "utc": -5},
  290.             {"zone": "Rankin_Inlet", "utc": -5},
  291.             {"zone": "Resolute", "utc": -5},
  292.             {"zone": "Winnipeg", "utc": -5},
  293.             {"zone": "Regina", "utc": -6},
  294.             {"zone": "Swift_Current", "utc": -6},
  295.             {"zone": "Cambridge_Bay", "utc": -6},
  296.             {"zone": "Edmonton", "utc": -6},
  297.             {"zone": "Inuvik", "utc": -6},
  298.             {"zone": "Yellowknife", "utc": -6},
  299.             {"zone": "Creston", "utc": -7},
  300.             {"zone": "Fort_Nelson", "utc": -7},
  301.             {"zone": "Dawson and Dawson Creek", "utc": -7},
  302.             {"zone": "Vancouver and Whitehorse", "utc": -7},
  303.         ]
  304.     },
  305.     "CC": {
  306.         "country": "Indian",
  307.         "zones": [
  308.             {"zone": "Cocos", "utc": [6, 30]}
  309.         ]
  310.     },
  311.     "CD": {
  312.         "country": "Africa",
  313.         "zones": [
  314.             {"zone": "Kinshasa", "utc": 1},
  315.             {"zone": "Lubumbashi", "utc": 2}
  316.         ]
  317.     },
  318.     "CF": {
  319.         "country": "Africa",
  320.         "zones": [
  321.             {"zone": "Bangui", "utc": 1}
  322.         ]
  323.     },
  324.     "CG": {
  325.         "country": "Africa",
  326.         "zones": [
  327.             {"zone": "Brazzaville", "utc": 1}
  328.         ]      
  329.     },
  330.     "CH": {
  331.         "country": "Europe",
  332.         "zones": [
  333.             {"zone": "Zurich", "utc": 2}
  334.         ]
  335.     },
  336.     "CI": {
  337.         "country": "Africa",
  338.         "zones": [
  339.             {"zone": "Abidjan", "utc": 0}
  340.         ]
  341.     },
  342.     "CK": {
  343.         "country": "Pacific",
  344.         "zones": [
  345.             {"zone": "Rarotonga", "utc": -10}
  346.         ]
  347.     },
  348.     "CL": {
  349.         "country": "America/Pacific",
  350.         "zones": [
  351.             {"zone": "Punta_Arenas (America)", "utc": -3},
  352.             {"zone": "Santiago (America)", "utc": -3},
  353.             {"zone": "Easter (Pacific)", "utc": -5}
  354.         ]
  355.     },
  356.     "CM": {
  357.         "country": "Africa",
  358.         "zones": [
  359.             {"zone": "Douala", "utc": 1}
  360.         ]
  361.     },
  362.     "CN": {
  363.         "country": "Asia",
  364.         "zones": [
  365.             {"zone": "Urumqui", "utc": 6},
  366.             {"zone": "Shanghai", "utc": 8}
  367.         ]
  368.     },
  369.     "CO": {
  370.         "country": "America",
  371.         "zones": [
  372.             {"zone": "Bogota", "utc": -5}
  373.         ]
  374.     },
  375.     "CR": {
  376.         "country": "America",
  377.         "zones": [
  378.             {"zone": "Costa_Rica", "utc": -6}
  379.         ]
  380.     },
  381.     "CU": {
  382.         "country": "America",
  383.         "zones": [
  384.             {"zone": "Havana", "utc": -4}
  385.         ]
  386.     },
  387.     "CV": {
  388.         "country": "Atlantic",
  389.         "zones": [
  390.             {"zone": "Cape_Verde", "utc": -1}
  391.         ]
  392.     },
  393.     "CW": {
  394.         "country": "America",
  395.         "zones": [
  396.             {"zone": "Cuiaba", "utc": -3}
  397.         ]
  398.     },
  399.     "CX": {
  400.         "country": "Indian",
  401.         "zones": [
  402.             {"zone": "Christmas", "utc": 7}
  403.         ]
  404.     },
  405.     "CY": {
  406.         "country": "Asia",
  407.         "zones": [
  408.             {"zone": "Famagusta", "utc": 2},
  409.             {"zone": "Nicosia", "utc": 3}
  410.         ]
  411.     },
  412.     "CZ": {
  413.         "country": "Europe",
  414.         "zones": [
  415.             {"zone": "Prague", "utc": 2}
  416.         ]
  417.     },
  418.     "DE": {
  419.         "country": "Europe",
  420.         "zones": [
  421.             {"zone": "Berlin", "utc": 2},
  422.             {"zone": "Busingen", "utc": 1}
  423.         ]
  424.     },
  425.     "DJ": {
  426.         "country": "Africa",
  427.         "zones": [
  428.             {"zone": "Djibouti", "utc": 3}
  429.         ]
  430.     },
  431.     "DK": {
  432.         "country": "Europe",
  433.         "zones": [
  434.             {"zone": "Copenhagen", "utc": 2}
  435.         ]
  436.     },
  437.     "DM": {
  438.         "country": "America",
  439.         "zones": [
  440.             {"zone": "Dominica", "utc": -4}
  441.         ]
  442.     },
  443.     "DO": {
  444.         "country": "America",
  445.         "zones": [
  446.             {"zone": "Santo_Domingo", "utc": -4}
  447.         ]
  448.     },
  449.     "DZ": {
  450.         "country": "Africa",
  451.         "zones": [
  452.             {"zone": "Algiers", "utc": 1}
  453.         ]
  454.     },
  455.     "EC": {
  456.         "country": "America/Pacific",
  457.         "zones": [
  458.             {"zone": "Guayaquil (America)", "utc": -5},
  459.             {"zone": "Galapagos (Pacific)", "utc": -6}
  460.         ]
  461.     },
  462.     "EE": {
  463.         "country": "Europe",
  464.         "zones": [
  465.             {"zone": "Tallinn", "utc": 3}
  466.         ]
  467.     },
  468.     "EG": {
  469.         "country": "Africa",
  470.         "zones": [
  471.             {"zone": "Cairo", "utc": 2}
  472.         ]
  473.     },
  474.     "EH": {
  475.         "country": "Africa",
  476.         "zones": [
  477.             {"zone": "El_Aiun", "utc": 0}
  478.         ]
  479.     },
  480.     "ER": {
  481.         "country": "Africa",
  482.         "zones": [
  483.             {"zone": "Asmara", "utc": 3}
  484.         ]
  485.     },
  486.     "ES": {
  487.         "country": "Atlantic/Africa/Europe",
  488.         "zones": [
  489.             {"zone": "Canary (Atlantic)", "utc": 1},
  490.             {"zone": "Ceuta (Africa)", "utc": 1},
  491.             {"zone": "Madrid (Europe)", "utc": 2}
  492.         ]
  493.     },
  494.     "ET": {
  495.         "country": "Africa",
  496.         "zones": [
  497.             {"zone": "Addis_Ababa", "utc": 3}
  498.         ]
  499.     },
  500.     "FI": {
  501.         "country": "Europe",
  502.         "zones": [
  503.             {"zone": "Helsinki", "utc": 3}
  504.         ]
  505.     },
  506.     "FJ": {
  507.         "country": "Pacific",
  508.         "zones": [
  509.             {"zone": "Fiji", "utc": 13}
  510.         ]
  511.     },
  512.     "FK": {
  513.         "country": "Atlantic",
  514.         "zones": [
  515.             {"zone": "Stanley", "utc": -3}
  516.         ]
  517.     },
  518.     "FM": {
  519.         "country": "Pacific",
  520.         "zones": [
  521.             {"zone": "Chuuk", "utc": 10},
  522.             {"zone": "Kosrae", "utc": 11},
  523.             {"zone": "Pohnpei", "utc": 11}
  524.         ]
  525.     },
  526.     "FO": {
  527.         "country": "Atlantic",
  528.         "zones": [
  529.             {"zone": "Faroe", "utc": 1}
  530.         ]
  531.     },
  532.     "FR": {
  533.         "country": "Europe",
  534.         "zones": [
  535.             {"zone": "Paris", "utc": 2}
  536.         ]
  537.     },
  538.     "GA": {
  539.         "country": "Africa",
  540.         "zones": [
  541.             {"zone": "Libreville", "utc": 1}
  542.         ]
  543.     },
  544.     "GB": {
  545.         "country": "Europe",
  546.         "zones": [
  547.             {"zone": "London", "utc": 1}
  548.         ]
  549.     },
  550.     "GD": {
  551.         "country": "America",
  552.         "zones": [
  553.             {"zone": "Grenada", "utc": -4}
  554.         ]
  555.     },
  556.     "GE": {
  557.         "country": "Asia",
  558.         "zones": [
  559.             {"zone": "Tbilisi", "utc": 4}
  560.         ]
  561.     },
  562.     "GF": {
  563.         "country": "America",
  564.         "zones": [
  565.             {"zone": "Cayenne", "utc": -3}
  566.         ]
  567.     },
  568.     "GG": {
  569.         "country": "Europe",
  570.         "zones": [
  571.             {"zone": "Guernsey", "utc": 1}
  572.         ]
  573.     },
  574.     "GH": {
  575.         "country": "Africa",
  576.         "zones": [
  577.             {"zone": "Accra", "utc": 0}
  578.         ]
  579.     },
  580.     "GI": {
  581.         "country": "Europe",
  582.         "zones": [
  583.             {"zone": "Gibraltar", "utc": 2}
  584.         ]
  585.     },
  586.     "GL": {
  587.         "country": "America",
  588.         "zones": [
  589.             {"zone": "Danmarkshavn", "utc": 0},
  590.             {"zone": "Scoresbysund", "utc": 0},
  591.             {"zone": "Godthab", "utc": -2},
  592.             {"zone": "Thule", "utc": -3}
  593.         ]
  594.     },
  595.     "GM": {
  596.         "country": "Africa",
  597.         "zones": [
  598.             {"zone": "Banjul", "utc": 0}
  599.         ]
  600.     },
  601.     "GN": {
  602.         "country": "Africa",
  603.         "zones": [
  604.             {"zone": "Conakry", "utc": 0}
  605.         ]
  606.     },
  607.     "GP": {
  608.         "country": "America",
  609.         "zones": [
  610.             {"zone": "Guadeloupe", "utc": -4}
  611.         ]
  612.     },
  613.     "GQ": {
  614.         "country": "Africa",
  615.         "zones": [
  616.             {"zone": "Malabo", "utc": 0}
  617.         ]
  618.     },
  619.     "GR": {
  620.         "country": "Europe",
  621.         "zones": [
  622.             {"zone": "Athens", "utc": 3}
  623.         ]
  624.     },
  625.     "GS": {
  626.         "country": "Atlantic",
  627.         "zones": [
  628.             {"zone": "South_Georgia", "utc": -2}
  629.         ]
  630.     },
  631.     "GT": {
  632.         "country": "America",
  633.         "zones": [
  634.             {"zone": "Guatemala", "utc": -6}
  635.         ]
  636.     },
  637.     "GU": {
  638.         "country": "Pacific",
  639.         "zones": [
  640.             {"zone": "Guam", "utc": 10}
  641.         ]
  642.     },
  643.     "GW": {
  644.         "country": "Africa",
  645.         "zones": [
  646.             {"zone": "Bissau", "utc": 0}
  647.         ]
  648.     },
  649.     "GY": {
  650.         "country": "America",
  651.         "zones": [
  652.             {"zone": "Guyana", "utc": -4}
  653.         ]
  654.     },
  655.     "HK": {
  656.         "country": "Asia",
  657.         "zones": [
  658.             {"zone": "Hong_Kong", "utc": 8}
  659.         ]
  660.     },
  661.     "HN": {
  662.         "country": "America",
  663.         "zones": [
  664.             {"zone": "Tegucigalpa", "utc": -6}
  665.         ]
  666.     },
  667.     "HR": {
  668.         "country": "Europe",
  669.         "zones": [
  670.             {"zone": "Zagreb", "utc": 2}
  671.         ]
  672.     },
  673.     "HT": {
  674.         "country": "America",
  675.         "zones": [
  676.             {"zone": "Port-au-Prince", "utc": -4}
  677.         ]
  678.     },
  679.     "HU": {
  680.         "country": "Europe",
  681.         "zones": [
  682.             {"zone": "Budapest", "utc": 2}
  683.         ]
  684.     },
  685.     "ID": {
  686.         "country": "Asia",
  687.         "zones": [
  688.             {"zone": "Jakarta", "utc": 7},
  689.             {"zone": "Pontianak", "utc": 7},
  690.             {"zone": "Makassar", "utc": 8},
  691.             {"zone": "Jayapure", "utc": 9}
  692.         ]
  693.     },
  694.     "IE": {
  695.         "country": "Europe",
  696.         "zones": [
  697.             {"zone": "Dublin", "utc": 1}
  698.         ]
  699.     },
  700.     "IL": {
  701.         "country": "Asia",
  702.         "zones": [
  703.             {"zone": "Jerusalem", "utc": 3}
  704.         ]
  705.     },
  706.     "IM": {
  707.         "country": "Europe",
  708.         "zones": [
  709.             {"zone": "Isle_of_Man", "utc": 1}
  710.         ]
  711.     },
  712.     "IN": {
  713.         "country": "Asia",
  714.         "zones": [
  715.             {"zone": "Kolkata", "utc": [5, 30]}
  716.         ]
  717.     },
  718.     "IO": {
  719.         "country": "Indian",
  720.         "zones": [
  721.             {"zone": "Chagos", "utc": 6}
  722.         ]
  723.     },
  724.     "IQ": {
  725.         "country": "Asia",
  726.         "zones": [
  727.             {"zone": "Baghdad", "utc": 3}
  728.         ]
  729.     },
  730.     "IR": {
  731.         "country": "Asia",
  732.         "zones": [
  733.             {"zone": "Tehran", "utc": [4, 30]}
  734.         ]
  735.     },
  736.     "IS": {
  737.         "country": "Atlantic",
  738.         "zones": [
  739.             {"zone": "Reykjavik", "utc": 0}
  740.         ]
  741.     },
  742.     "IT": {
  743.         "country": "Europe",
  744.         "zones": [
  745.             {"zone": "Rome", "utc": 2}
  746.         ]
  747.     },
  748.     "JE": {
  749.         "country": "Europe",
  750.         "zones": [
  751.             {"zone": "Jersey", "utc": 1}
  752.         ]
  753.     },
  754.     "JM": {
  755.         "country": "",
  756.         "zones": [
  757.             {"zone": "", "utc": 0}
  758.         ]
  759.     },
  760.     "JO": {
  761.         "country": "Asia",
  762.         "zones": [
  763.             {"zone": "Amman", "utc": 3}
  764.         ]
  765.     },
  766.     "JP": {
  767.         "country": "Asia",
  768.         "zones": [
  769.             {"zone": "Tokyo", "utc": 9}
  770.         ]
  771.     },
  772.     "KE": {
  773.         "country": "Africa",
  774.         "zones": [
  775.             {"zone": "Nairobi", "utc": 3}
  776.         ]
  777.     },
  778.     "KG": {
  779.         "country": "Asia",
  780.         "zones": [
  781.             {"zone": "Bishkek", "utc": 6}
  782.         ]
  783.     },
  784.     "KH": {
  785.         "country": "Asia",
  786.         "zones": [
  787.             {"zone": "Phnom_Penh", "utc": 7}
  788.         ]
  789.     },
  790.     "KI": {
  791.         "country": "Pacific",
  792.         "zones": [
  793.             {"zone": "Tarawa", "utc": 12},
  794.             {"zone": "Enderbury", "utc": 13},
  795.             {"zone": "Kiritimati", "utc": 14}
  796.         ]
  797.     },
  798.     "KM": {
  799.         "country": "Indian",
  800.         "zones": [
  801.             {"zone": "Comoro", "utc": 3}
  802.         ]
  803.     },
  804.     "KN": {
  805.         "country": "America",
  806.         "zones": [
  807.             {"zone": "St_Kitts", "utc": -4}
  808.         ]
  809.     },
  810.     "KP": {
  811.         "country": "Asia",
  812.         "zones": [
  813.             {"zone": "Pyongyang", "utc": 9}
  814.         ]
  815.     },
  816.     "KR": {
  817.         "country": "Asia",
  818.         "zones": [
  819.             {"zone": "Seoul", "utc": 9}
  820.         ]
  821.     },
  822.     "KW": {
  823.         "country": "Asia",
  824.         "zones": [
  825.             {"zone": "Kuwait", "utc": 3}
  826.         ]
  827.     },
  828.     "KY": {
  829.         "country": "America",
  830.         "zones": [
  831.             {"zone": "Cayman", "utc": -5}
  832.         ]
  833.     },
  834.     "KZ": {
  835.         "country": "Asia",
  836.         "zones": [
  837.             {"zone": "Aqtau", "utc": 5},
  838.             {"zone": "Aqtobe", "utc": 5},
  839.             {"zone": "Atyrau", "utc": 5},
  840.             {"zone": "Oral", "utc": 5},
  841.             {"zone": "Qyzylorda", "utc": 5},
  842.             {"zone": "Almaty", "utc": 6}
  843.         ]
  844.     },
  845.     "LA": {
  846.         "country": "Asia",
  847.         "zones": [
  848.             {"zone": "Vientiane", "utc": 7}
  849.         ]
  850.     },
  851.     "LB": {
  852.         "country": "Asia",
  853.         "zones": [
  854.             {"zone": "Beirut", "utc": 3}
  855.         ]
  856.     },
  857.     "LC": {
  858.         "country": "America",
  859.         "zones": [
  860.             {"zone": "St_Lucia", "utc": -4}
  861.         ]
  862.     },
  863.     "LI": {
  864.         "country": "Europe",
  865.         "zones": [
  866.             {"zone": "Vaduz", "utc": 2}
  867.         ]
  868.     },
  869.     "LK": {
  870.         "country": "Asia",
  871.         "zones": [
  872.             {"zone": "Colombo", "utc": [5, 30]},
  873.         ]
  874.     },
  875.     "LR": {
  876.         "country": "Africa",
  877.         "zones": [
  878.             {"zone": "Monrovia", "utc": 0}
  879.         ]
  880.     },
  881.     "LS": {
  882.         "country": "Africa",
  883.         "zones": [
  884.             {"zone": "Maseru", "utc": 2}
  885.         ]
  886.     },
  887.     "LT": {
  888.         "country": "Europe",
  889.         "zones": [
  890.             {"zone": "Vilnius", "utc": 3}
  891.         ]
  892.     },
  893.     "LU": {
  894.         "country": "Europe",
  895.         "zones": [
  896.             {"zone": "Luxembourg", "utc": 2}
  897.         ]
  898.     },
  899.     "LV": {
  900.         "country": "Europe",
  901.         "zones": [
  902.             {"zone": "Riga", "utc": 3}
  903.         ]
  904.     },
  905.     "LY": {
  906.         "country": "Africa",
  907.         "zones": [
  908.             {"zone": "Tripoli", "utc": 2}
  909.         ]
  910.     },
  911.     "MA": {
  912.         "country": "Africa",
  913.         "zones": [
  914.             {"zone": "Casablanca", "utc": 1}
  915.         ]
  916.     },
  917.     "MC": {
  918.         "country": "Europe",
  919.         "zones": [
  920.             {"zone": "Monaco", "utc": 2}
  921.         ]
  922.     },
  923.     "MD": {
  924.         "country": "Europe",
  925.         "zones": [
  926.             {"zone": "Chisinau", "utc": 3}
  927.         ]
  928.     },
  929.     "ME": {
  930.         "country": "Europe",
  931.         "zones": [
  932.             {"zone": "Podgorica", "utc": 2}
  933.         ]
  934.     },
  935.     "MF": {
  936.         "country": "America",
  937.         "zones": [
  938.             {"zone": "Marigot", "utc": -4}
  939.         ]
  940.     },
  941.     "MG": {
  942.         "country": "Indian",
  943.         "zones": [
  944.             {"zone": "Antananarivo", "utc": 3}
  945.         ]
  946.     },
  947.     "MH": {
  948.         "country": "Pacific",
  949.         "zones": [
  950.             {"zone": "Kwajelein", "utc": 12},
  951.             {"zone": "Majuro", "utc": 12}
  952.         ]
  953.     },
  954.     "MK": {
  955.         "country": "Europe",
  956.         "zones": [
  957.             {"zone": "Skopje", "utc": 1}
  958.         ]
  959.     },
  960.     "ML": {
  961.         "country": "Africa",
  962.         "zones": [
  963.             {"zone": "Bamako", "utc": 0}
  964.         ]
  965.     },
  966.     "MM": {
  967.         "country": "Asia",
  968.         "zones": [
  969.             {"zone": "Rangoon", "utc": [6, 30]},
  970.             {"zone": "Yangon", "utc": [6, 30]}
  971.         ]
  972.     },
  973.     "MN": {
  974.         "country": "Asia",
  975.         "zones": [
  976.             {"zone": "Hovd", "utc": 7},
  977.             {"zone": "Choibalsan", "utc": 8},
  978.             {"zone": "Ulaanbaatar", "utc": 8}
  979.         ]
  980.     },
  981.     "MO": {
  982.         "country": "Asia",
  983.         "zones": [
  984.             {"zone": "Macau", "utc": 8}
  985.         ]
  986.     },
  987.     "MP": {
  988.         "country": "Pacific",
  989.         "zones": [
  990.             {"zone": "Saipan", "utc": 10}
  991.         ]
  992.     },
  993.     "MQ": {
  994.         "country": "America",
  995.         "zones": [
  996.             {"zone": "Martinique", "utc": -4}
  997.         ]
  998.     },
  999.     "MR": {
  1000.         "country": "Africa",
  1001.         "zones": [
  1002.             {"zone": "Nouakchott", "utc": 0}
  1003.         ]
  1004.     },
  1005.     "MS": {
  1006.         "country": "America",
  1007.         "zones": [
  1008.             {"zone": "Montserrat", "utc": -4}
  1009.         ]
  1010.     },
  1011.     "MT": {
  1012.         "country": "Europe",
  1013.         "zones": [
  1014.             {"zone": "Malta", "utc": 2}
  1015.         ]
  1016.     },
  1017.     "MU": {
  1018.         "country": "Indian",
  1019.         "zones": [
  1020.             {"zone": "Mauritius", "utc": 4}
  1021.         ]
  1022.     },
  1023.     "MV": {
  1024.         "country": "Indian",
  1025.         "zones": [
  1026.             {"zone": "Maldives", "utc": 5}
  1027.         ]
  1028.     },
  1029.     "MW": {
  1030.         "country": "Africa",
  1031.         "zones": [
  1032.             {"zone": "Blantyre", "utc": 2}
  1033.         ]
  1034.     },
  1035.     "MX": {
  1036.         "country": "America",
  1037.         "zones": [
  1038.             {"zone": "Bahia_Banderas", "utc": -5},
  1039.             {"zone": "Cancun", "utc": -5},
  1040.             {"zone": "Matamoros", "utc": -5},
  1041.             {"zone": "Merida", "utc": -5},
  1042.             {"zone": "Mexico_City", "utc": -5},
  1043.             {"zone": "Monterrey", "utc": -5},
  1044.             {"zone": "Chihuahua", "utc": -6},
  1045.             {"zone": "Mazatlan", "utc": -6},
  1046.             {"zone": "Ojinaga", "utc": -6},
  1047.             {"zone": "Hermosillo", "utc": -7},
  1048.             {"zone": "Tijuana", "utc": -7}
  1049.         ]
  1050.     },
  1051.     "MY": {
  1052.         "country": "Asia",
  1053.         "zones": [
  1054.             {"zone": "Kuala_Lumpur", "utc": 8},
  1055.             {"zone": "Kuching", "utc": 8}
  1056.         ]
  1057.     },
  1058.     "MZ": {
  1059.         "country": "Africa",
  1060.         "zones": [
  1061.             {"zone": "Maputo", "utc": 2}
  1062.         ]
  1063.     },
  1064.     "NA": {
  1065.         "country": "Africa",
  1066.         "zones": [
  1067.             {"zone": "Windhoek", "utc": 2}
  1068.         ]
  1069.     },
  1070.     "NC": {
  1071.         "country": "Pacific",
  1072.         "zones": [
  1073.             {"zone": "Nourmea", "utc": 11}
  1074.         ]
  1075.     },
  1076.     "NE": {
  1077.         "country": "Africa",
  1078.         "zones": [
  1079.             {"zone": "Niamey", "utc": 1}
  1080.         ]
  1081.     },
  1082.     "NF": {
  1083.         "country": "Pacific",
  1084.         "zones": [
  1085.             {"zone": "Norfolk", "utc": 11}
  1086.         ]
  1087.     },
  1088.     "NG": {
  1089.         "country": "Africa",
  1090.         "zones": [
  1091.             {"zone": "Lagos", "utc": 1}
  1092.         ]
  1093.     },
  1094.     "NI": {
  1095.         "country": "America",
  1096.         "zones": [
  1097.             {"zone": "Managua", "utc": -6}
  1098.         ]
  1099.     },
  1100.     "NL": {
  1101.         "country": "Europe",
  1102.         "zones": [
  1103.             {"zone": "Amsterdam", "utc": 2}
  1104.         ]
  1105.     },
  1106.     "NO": {
  1107.         "country": "Europe",
  1108.         "zones": [
  1109.             {"zone": "Oslo", "utc": 2}
  1110.         ]
  1111.     },
  1112.     "NP": {
  1113.         "country": "Asia",
  1114.         "zones": [
  1115.             {"zone": "Kathmandu", "utc": [5, 45]}
  1116.         ]
  1117.     },
  1118.     "NR": {
  1119.         "country": "Pacific",
  1120.         "zones": [
  1121.             {"zone": "Nauru", "utc": 12}
  1122.         ]
  1123.     },
  1124.     "NU": {
  1125.         "country": "Pacific",
  1126.         "zones": [
  1127.             {"zone": "Niue", "utc": -11}
  1128.         ]
  1129.     },
  1130.     "NZ": {
  1131.         "country": "Pacific",
  1132.         "zones": [
  1133.             {"zone": "Auckland", "utc": 13},
  1134.             {"zone": "Chatham", "utc": [13, 45]}
  1135.         ]
  1136.     },
  1137.     "OM": {
  1138.         "country": "Asia",
  1139.         "zones": [
  1140.             {"zone": "Muscat", "utc": 4}
  1141.         ]
  1142.     },
  1143.     "PA": {
  1144.         "country": "America",
  1145.         "zones": [
  1146.             {"zone": "Panama", "utc": -5}
  1147.         ]
  1148.     },
  1149.     "PE": {
  1150.         "country": "",
  1151.         "zones": [
  1152.             {"zone": "", "utc": 0}
  1153.         ]
  1154.     },
  1155.     "PF": {
  1156.         "country": "Pacific",
  1157.         "zones": [
  1158.             {"zone": "Gambier", "utc": -9},
  1159.             {"zone": "Marquesas", "utc": [-9, -30]},
  1160.             {"zone": "Tahiti", "utc": -10}
  1161.         ]
  1162.     },
  1163.     "PG": {
  1164.         "country": "Pacific",
  1165.         "zones": [
  1166.             {"zone": "Port_Moresby", "utc": 10},
  1167.             {"zone": "Bougainville", "utc": 11}
  1168.         ]
  1169.     },
  1170.     "PH": {
  1171.         "country": "Asia",
  1172.         "zones": [
  1173.             {"zone": "Manila", "utc": 8}
  1174.         ]
  1175.     },
  1176.     "PK": {
  1177.         "country": "Asia",
  1178.         "zones": [
  1179.             {"zone": "Karachi", "utc": 5}
  1180.         ]
  1181.     },
  1182.     "PL": {
  1183.         "country": "Europe",
  1184.         "zones": [
  1185.             {"zone": "Warsaw", "utc": 1}
  1186.         ]
  1187.     },
  1188.     "PM": {
  1189.         "country": "America",
  1190.         "zones": [
  1191.             {"zone": "Miquelon", "utc": -2}
  1192.         ]
  1193.     },
  1194.     "PN": {
  1195.         "country": "Pacific",
  1196.         "zones": [
  1197.             {"zone": "Pitcairn", "utc": -8}
  1198.         ]
  1199.     },
  1200.     "PR": {
  1201.         "country": "America",
  1202.         "zones": [
  1203.             {"zone": "Puerto_Rico", "utc": -4}
  1204.         ]
  1205.     },
  1206.     "PS": {
  1207.         "country": "Asia",
  1208.         "zones": [
  1209.             {"zone": "Gaza", "utc": 3},
  1210.             {"zone": "Hebron", "utc": 3}
  1211.         ]
  1212.     },
  1213.     "PT": {
  1214.         "country": "Atlantic/Europe",
  1215.         "zones": [
  1216.             {"zone": "Madeira (Atlantic)", "utc": 1},
  1217.             {"zone": "Lisbon (Europe)", "utc": 1},
  1218.             {"zone": "Azores (Atlantic)", "utc": 0}
  1219.         ]
  1220.     },
  1221.     "PW": {
  1222.         "country": "Pacific",
  1223.         "zones": [
  1224.             {"zone": "Palau", "utc": 9}
  1225.         ]
  1226.     },
  1227.     "PY": {
  1228.         "country": "America",
  1229.         "zones": [
  1230.             {"zone": "Asuncion", "utc": -3}
  1231.         ]
  1232.     },
  1233.     "QA": {
  1234.         "country": "Asia",
  1235.         "zones": [
  1236.             {"zone": "Qatar", "utc": 3}
  1237.         ]
  1238.     },
  1239.     "RE": {
  1240.         "country": "Indian",
  1241.         "zones": [
  1242.             {"zone": "Reunion", "utc": 4}
  1243.         ]
  1244.     },
  1245.     "RO": {
  1246.         "country": "Europe",
  1247.         "zones": [
  1248.             {"zone": "Bucharest", "utc": 3}
  1249.         ]
  1250.     },
  1251.     "RS": {
  1252.         "country": "Europe",
  1253.         "zones": [
  1254.             {"zone": "Belgrade", "utc": 2}
  1255.         ]
  1256.     },
  1257.     "RU": {
  1258.         "country": "Europe/Asia",
  1259.         "zones": [
  1260.             {"zone": "Kaliningrad (Europe)", "utc": 2},
  1261.             {"zone": "Kirov (Europe)", "utc": 3},
  1262.             {"zone": "Astrakhan (Europe)", "utc": 4},
  1263.             {"zone": "Samara (Europe)", "utc": 4},
  1264.             {"zone": "Saratov (Europe)", "utc": 4},
  1265.             {"zone": "Ulyanovsk (Europe)", "utc": 4},
  1266.             {"zone": "Volgograd (Europe)", "utc": 4},
  1267.             {"zone": "Yekaterinburg (Asia)", "utc": 5},
  1268.             {"zone": "Omsk (Asia)", "utc": 6},
  1269.             {"zone": "Barnaul (Asia)", "utc": 7},
  1270.             {"zone": "Krasnoyarsk (Asia)", "utc": 7},
  1271.             {"zone": "Novokuznetsk (Asia)", "utc": 7},
  1272.             {"zone": "Novosibirk (Asia)", "utc": 7},
  1273.             {"zone": "Tomsk (Asia)", "utc": 7},
  1274.             {"zone": "Irkutsk (Asia)", "utc": 8},
  1275.             {"zone": "Chita (Asia)", "utc": 9},
  1276.             {"zone": "Khandyga (Asia)", "utc": 9},
  1277.             {"zone": "Yakutsk (Asia)", "utc": 9},
  1278.             {"zone": "Ust-Nera (Asia)", "utc": 10},
  1279.             {"zone": "Vladivostok (Asia)", "utc": 10},
  1280.             {"zone": "Magadan (Asia)", "utc": 11},
  1281.             {"zone": "Sakhalin (Asia)", "utc": 11},
  1282.             {"zone": "Srednekolymsk (Asia)", "utc": 11},
  1283.             {"zone": "Anadyr (Asia)", "utc": 12},
  1284.             {"zone": "Kamchatka (Asia)", "utc": 12}
  1285.         ]
  1286.     },
  1287.     "RW": {
  1288.         "country": "Africa",
  1289.         "zones": [
  1290.             {"zone": "Kigali", "utc": 2}
  1291.         ]
  1292.     },
  1293.     "SA": {
  1294.         "country": "Asia",
  1295.         "zones": [
  1296.             {"zone": "Riyadh", "utc": 3}
  1297.         ]
  1298.     },
  1299.     "SB": {
  1300.         "country": "Pacific",
  1301.         "zones": [
  1302.             {"zone": "Guadalcanal", "utc": 11}
  1303.         ]
  1304.     },
  1305.     "SC": {
  1306.         "country": "Indian",
  1307.         "zones": [
  1308.             {"zone": "Mahe", "utc": 4}
  1309.         ]
  1310.     },
  1311.     "SD": {
  1312.         "country": "Africa",
  1313.         "zones": [
  1314.             {"zone": "Khartoum", "utc": 2}
  1315.         ]
  1316.     },
  1317.     "SE": {
  1318.         "country": "Europe",
  1319.         "zones": [
  1320.             {"zone": "Stockholm", "utc": 2}
  1321.         ]
  1322.     },
  1323.     "SG": {
  1324.         "country": "Asia",
  1325.         "zones": [
  1326.             {"zone": "Singapore", "utc": 8}
  1327.         ]
  1328.     },
  1329.     "SH": {
  1330.         "country": "Atlantic",
  1331.         "zones": [
  1332.             {"zone": "St_Helena", "utc": 0}
  1333.         ]
  1334.     },
  1335.     "SI": {
  1336.         "country": "Europe",
  1337.         "zones": [
  1338.             {"zone": "Ljubljana", "utc": 2}
  1339.         ]
  1340.     },
  1341.     "SJ": {
  1342.         "country": "Arctic",
  1343.         "zones": [
  1344.             {"zone": "Longyearbyen", "utc": 2}
  1345.         ]
  1346.     },
  1347.     "SK": {
  1348.         "country": "Europe",
  1349.         "zones": [
  1350.             {"zone": "Bratislava", "utc": 2}
  1351.         ]
  1352.     },
  1353.     "SL": {
  1354.         "country": "Africa",
  1355.         "zones": [
  1356.             {"zone": "Freetown", "utc": 0}
  1357.         ]
  1358.     },
  1359.     "SM": {
  1360.         "country": "Europe",
  1361.         "zones": [
  1362.             {"zone": "San_Marino", "utc": 2}
  1363.         ]
  1364.     },
  1365.     "SN": {
  1366.         "country": "Africa",
  1367.         "zones": [
  1368.             {"zone": "Dakar", "utc": 0}
  1369.         ]
  1370.     },
  1371.     "SO": {
  1372.         "country": "Africa",
  1373.         "zones": [
  1374.             {"zone": "Mogadishu", "utc": 3}
  1375.         ]
  1376.     },
  1377.     "SR": {
  1378.         "country": "America",
  1379.         "zones": [
  1380.             {"zone": "Paramaribo", "utc": -3}
  1381.         ]
  1382.     },
  1383.     "SS": {
  1384.         "country": "Africa",
  1385.         "zones": [
  1386.             {"zone": "Juba", "utc": 3}
  1387.         ]
  1388.     },
  1389.     "ST": {
  1390.         "country": "Africa",
  1391.         "zones": [
  1392.             {"zone": "Sao_Tome", "utc": 0}
  1393.         ]
  1394.     },
  1395.     "SV": {
  1396.         "country": "America",
  1397.         "zones": [
  1398.             {"zone": "El_Salvador", "utc": -6}
  1399.         ]
  1400.     },
  1401.     "SX": {
  1402.         "country": "America",
  1403.         "zones": [
  1404.             {"zone": "Lower_Princes", "utc": -4}
  1405.         ]
  1406.     },
  1407.     "SY": {
  1408.         "country": "Asia",
  1409.         "zones": [
  1410.             {"zone": "Damascus", "utc": 3}
  1411.         ]
  1412.     },
  1413.     "SZ": {
  1414.         "country": "Africa",
  1415.         "zones": [
  1416.             {"zone": "Mbabane", "utc": 2}
  1417.         ]
  1418.     },
  1419.     "TC": {
  1420.         "country": "America",
  1421.         "zones": [
  1422.             {"zone": "Grand_Turk", "utc": -4}
  1423.         ]
  1424.     },
  1425.     "TD": {
  1426.         "country": "Africa",
  1427.         "zones": [
  1428.             {"zone": "Ndjamena", "utc": 0}
  1429.         ]
  1430.     },
  1431.     "TF": {
  1432.         "country": "Indian",
  1433.         "zones": [
  1434.             {"zone": "Kerguelen", "utc": 5}
  1435.         ]
  1436.     },
  1437.     "TG": {
  1438.         "country": "Africa",
  1439.         "zones": [
  1440.             {"zone": "Lome", "utc": 0}
  1441.         ]
  1442.     },
  1443.     "TH": {
  1444.         "country": "Asia",
  1445.         "zones": [
  1446.             {"zone": "Bangkok", "utc": 7}
  1447.         ]
  1448.     },
  1449.     "TJ": {
  1450.         "country": "Asia",
  1451.         "zones": [
  1452.             {"zone": "Dushanbe", "utc": 0}
  1453.         ]
  1454.     },
  1455.     "TK": {
  1456.         "country": "Pacific",
  1457.         "zones": [
  1458.             {"zone": "Fakaofo", "utc": 13}
  1459.         ]
  1460.     },
  1461.     "TL": {
  1462.         "country": "Asia",
  1463.         "zones": [
  1464.             {"zone": "Dili", "utc": 9}
  1465.         ]
  1466.     },
  1467.     "TM": {
  1468.         "country": "Asia",
  1469.         "zones": [
  1470.             {"zone": "Ashgabat", "utc": 5}
  1471.         ]
  1472.     },
  1473.     "TN": {
  1474.         "country": "Africa",
  1475.         "zones": [
  1476.             {"zone": "Tunis", "utc": 0}
  1477.         ]
  1478.     },
  1479.     "TO": {
  1480.         "country": "Pacific",
  1481.         "zones": [
  1482.             {"zone": "Tongatapu", "utc": 14}
  1483.         ]
  1484.     },
  1485.     "TR": {
  1486.         "country": "Europe",
  1487.         "zones": [
  1488.             {"zone": "Istanbul", "utc": 3}
  1489.         ]
  1490.     },
  1491.     "TT": {
  1492.         "country": "America",
  1493.         "zones": [
  1494.             {"zone": "Port_of_Spain", "utc": -4}
  1495.         ]
  1496.     },
  1497.     "TV": {
  1498.         "country": "Pacific",
  1499.         "zones": [
  1500.             {"zone": "Funafuti", "utc": 12}
  1501.         ]
  1502.     },
  1503.     "TW": {
  1504.         "country": "Asia",
  1505.         "zones": [
  1506.             {"zone": "Taipei", "utc": 8}
  1507.         ]
  1508.     },
  1509.     "TZ": {
  1510.         "country": "Africa",
  1511.         "zones": [
  1512.             {"zone": "Dar_es_Salaam", "utc": 3}
  1513.         ]
  1514.     },
  1515.     "UA": {
  1516.         "country": "Europe",
  1517.         "zones": [
  1518.             {"zone": "Kiev", "utc": 3},
  1519.             {"zone": "Uzhgorod", "utc": 3},
  1520.             {"zone": "Zaporozhye", "utc": 3},
  1521.             {"zone": "Simferopol", "utc": 3}
  1522.         ]
  1523.     },
  1524.     "UG": {
  1525.         "country": "Africa",
  1526.         "zones": [
  1527.             {"zone": "Kampala", "utc": 3}
  1528.         ]
  1529.     },
  1530.     "UM": {
  1531.         "country": "Pacific",
  1532.         "zones": [
  1533.             {"zone": "Wake", "utc": 12},
  1534.             {"zone": "Midway", "utc": -11}
  1535.         ]
  1536.     },
  1537.     "US": {
  1538.         "country": "America",
  1539.         "zones": [
  1540.             {"zone": "Detroit and New_York", "utc": -4},
  1541.             {"zone": "Indiana/Indianapolis", "utc": -4},
  1542.             {"zone": "Indiana/Marengo", "utc": -4},
  1543.             {"zone": "Indiana/Petersburg", "utc": -4},
  1544.             {"zone": "Indiana/Vevay", "utc": -4},
  1545.             {"zone": "Indiana/Vincennes", "utc": -4},
  1546.             {"zone": "Indiana/Winamac", "utc": -4},
  1547.             {"zone": "Chicago", "utc": -5},
  1548.             {"zone": "Indiana/Knox and Tell_City", "utc": -5},
  1549.             {"zone": "Menominee", "utc": -5},
  1550.             {"zone": "North_Dakota/Beulah", "utc": -5},
  1551.             {"zone": "North_Dakota/Center", "utc": -5},
  1552.             {"zone": "North_Dakota/New_Salem", "utc": -5},
  1553.             {"zone": "Boise", "utc": -6},
  1554.             {"zone": "Denver", "utc": -6},
  1555.             {"zone": "Phoenix", "utc": -7},
  1556.             {"zone": "Los_Angeles", "utc": -7},
  1557.             {"zone": "Anchorage", "utc": -8},
  1558.             {"zone": "Juneau", "utc": -8},
  1559.             {"zone": "Meltakatla", "utc": -8},
  1560.             {"zone": "Nome", "utc": -8},
  1561.             {"zone": "Sitka", "utc": -8},
  1562.             {"zone": "Yakutat", "utc": -8},
  1563.             {"zone": "Adak", "utc": -9},
  1564.             {"zone": "Honolulu", "utc": -10}
  1565.         ]
  1566.     },
  1567.     "UY": {
  1568.         "country": "America",
  1569.         "zones": [
  1570.             {"zone": "Montevideo", "utc": -3}
  1571.         ]
  1572.     },
  1573.     "UZ": {
  1574.         "country": "Asia",
  1575.         "zones": [
  1576.             {"zone": "Samarkand", "utc": 5},
  1577.             {"zone": "Tashkent", "utc": 5}
  1578.         ]
  1579.     },
  1580.     "VA": {
  1581.         "country": "Europe",
  1582.         "zones": [
  1583.             {"zone": "Vatican", "utc": 2}
  1584.         ]
  1585.     },
  1586.     "VC": {
  1587.         "country": "America",
  1588.         "zones": [
  1589.             {"zone": "St_Vincent", "utc": -4}
  1590.         ]
  1591.     },
  1592.     "VE": {
  1593.         "country": "America",
  1594.         "zones": [
  1595.             {"zone": "Caracas", "utc": -4}
  1596.         ]
  1597.     },
  1598.     "VG": {
  1599.         "country": "America",
  1600.         "zones": [
  1601.             {"zone": "Tortola", "utc": -4}
  1602.         ]
  1603.     },
  1604.     "VI": {
  1605.         "country": "America",
  1606.         "zones": [
  1607.             {"zone": "St_Thomas", "utc": -4}
  1608.         ]
  1609.     },
  1610.     "VN": {
  1611.         "country": "Asia",
  1612.         "zones": [
  1613.             {"zone": "Ho_Chi_Minh", "utc": 7}
  1614.         ]
  1615.     },
  1616.     "VU": {
  1617.         "country": "Pacific",
  1618.         "zones": [
  1619.             {"zone": "Efate", "utc": 11}
  1620.         ]
  1621.     },
  1622.     "WF": {
  1623.         "country": "Pacific",
  1624.         "zones": [
  1625.             {"zone": "Wallis", "utc": 12}
  1626.         ]
  1627.     },
  1628.     "WS": {
  1629.         "country": "Pacific",
  1630.         "zones": [
  1631.             {"zone": "Apia", "utc": 14}
  1632.         ]
  1633.     },
  1634.     "YE": {
  1635.         "country": "Asia",
  1636.         "zones": [
  1637.             {"zone": "Aden", "utc": 3}
  1638.         ]
  1639.     },
  1640.     "YT": {
  1641.         "country": "Indian",
  1642.         "zones": [
  1643.             {"zone": "Mayotte", "utc": 3}
  1644.         ]
  1645.     },
  1646.     "ZA": {
  1647.         "country": "Africa",
  1648.         "zones": [
  1649.             {"zone": "Johannesburg", "utc": 2}
  1650.         ]
  1651.     },
  1652.     "ZM": {
  1653.         "country": "Africa",
  1654.         "zones": [
  1655.             {"zone": "Lusaka", "utc": 2}
  1656.         ]
  1657.     },
  1658.     "ZW": {
  1659.         "country": "Africa",
  1660.         "zones": [
  1661.             {"zone": "Harare", "utc": 2}
  1662.         ]
  1663.     }
  1664.  
  1665. }
  1666.  
  1667. def convert_time(zone, hour=None, minute=None, sec=None):
  1668.     now = datetime.now(timezone.utc)
  1669.     """now = datetime.datetime.now()
  1670.     hour = hour or now.hour
  1671.     minute = minute or now.minute
  1672.     sec = sec or now.second"""
  1673.     if hour:
  1674.         now = datetime(now.year, now.month, now.day, hour, minute, sec)
  1675.  
  1676.     converted = []
  1677.     if zone not in timezones:
  1678.         return False, False
  1679.     else:
  1680.         #print(timezones[zone])
  1681.         for tzone in timezones[zone]["zones"]:
  1682.             if type(tzone["utc"]) == list:
  1683.                 t = now + timedelta(hours=tzone["utc"][0], minutes=tzone["utc"][1])
  1684.                 converted.append({"name": tzone["zone"], "value": t.strftime("%I:%M %p `(%m/%d/%Y)`"), "inline": True})
  1685.             else:
  1686.                 t = now + timedelta(hours=tzone["utc"])
  1687.                 converted.append({"name": tzone["zone"], "value": t.strftime("%I:%M %p `(%m/%d/%Y)`"), "inline": True})
  1688.  
  1689.     return converted, timezones[zone]["country"]
  1690.  
  1691. desc = ""
  1692. res = []
  1693. embed = {
  1694.     "title": ":x: Error",
  1695.     "description": "Invalid country code, please run `> worldclock help` to know more about this command",
  1696.     "color": 0xcc0000
  1697. }
  1698.  
  1699. if re.match(r"^[A-Z][A-Z]$", stdin):
  1700.     #print("only country code")
  1701.     zone = re.match(r"^[A-Z][A-Z]$", stdin).group()
  1702.     res, area = convert_time(zone)
  1703.     if not res:
  1704.         print(json.dumps(embed))
  1705.     else:
  1706.         embed = {
  1707.             "title": ":globe_with_meridians: Worldclock :clock130:",
  1708.             "description": f"**Country/Continent:**  :flag_{zone.lower()}: {area}",
  1709.             "fields": res,
  1710.             "color": 0x0BABC8
  1711.         }
  1712.         print(json.dumps(embed))
  1713. else:
  1714.     if re.match(r"HELP?\s*", stdin):
  1715.         embed = {
  1716.             "title": "Help :speech_balloon:",
  1717.             "description": """
  1718.                 Welcome to the worldclock help menu. Use this command if you want to know the time of any timezone in the world.
  1719.  
  1720.                 **Example usage**
  1721.                 `> worldclock us` - Provides the current time of all the timezones in USA
  1722.                 **Syntax**
  1723.                 `> worldclock <COUNTRY-CODE>`
  1724.                     - where <COUNTRY-CODE> is a valid country code. See all the valid country codes [here](https://countrycode.org/)
  1725.  
  1726.                 Type `> worldclock help` for this help menu
  1727.  
  1728.            
  1729.             """,
  1730.             "color": 0xFCD420
  1731.         }
  1732.         print(json.dumps(embed))
  1733.     else:
  1734.         print(json.dumps(embed))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement