{"tag":"datetime","articles":{"blog\/society\/our-timekeeping-sucks":{"key":"blog\/society\/our-timekeeping-sucks","type":"article","published":true,"meta":{"createdAt":"2018-02-20T19:25:09+01:00","publishedAt":"2018-09-18T19:46:00+02:00","group":"askara","category":"blog","subcategory":"society","slug":"our-timekeeping-sucks"},"content":{"en":{"slug":"our-timekeeping-sucks","title":"Our timekeeping sucks","intro":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/metric-farmers_small.png\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022288\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAVCAYAAAAuJkyQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGfUlEQVRIiZWW328U1xXHP+femdnZXRuvMRDb+McSTIHSEEioG6gsRFqUlKBYLQ\/9zUOrpk9IlSrlrVF\/PFap1D+gipRKfWny0OahrZRWhZQqpU1SDA6\/agf8A\/PLZu317szszL23D2sbA05Kz8udqzlzzvd+v+ecO2KMdQj3zIF1liSJEcBp4Xb1JvUkYqx6hchGTEfXqZh5kizmuwPfobetn7HZK\/SXysRpTC2t0Z5fz8W5SwSez0D7VuJGSqA9PPEARxDkUFrzoHmrN845JisVfvnhIov2FrtL77LYWOR85Ry9uW4CleNzXQeoxpeZiifY1zbIppYuPN\/jQu0Sb995m\/7iFkbnRrlem2Q0voCylnVeifZcBxZHX6GXtqCdVlp4bvNh+taXQeRhQNZablXmeOPqXbZ3tPHb8de4UjtLKAXag3aGHx\/mtSu\/YltpgC2tfWxt3wYI43fHqczd5fzcef698AGV9E0Qi6AQAYujYmaZjysYZ1HAvo59fHjnAh2FjdTrdcJ8iFJNtsQY66yzxHGEnwvxlCK1KUf++DrTSUSgYXfrR8w2ptje2sdX+77CMz0HaOrpGLl1ll+MvsqCqyIiGGsIdcBCNk\/qMrR4WCzagdNgjONbXcc53H+YzpYurDGkaYNcLkRp3WQoSWIK+WKTKoG\/TC9yau4FrGjAkaRz\/OjJFo5t2UCo8yBgsgylFSdvnOTZTV+gLShxYWGUu1mFgs4zMn8WXxuiLMLYhEwEl8K+ls+ya8NO5uMFutdtRimF5\/lEcZ0wzOMlSUyYy99XWLs7AgZLv2E2fYYDm7oYXF\/iGwOPIaiVwtfaY64+y7nKWcaicYY6Pk9O56mZGpdrV8hsg4ZtoJQgBBhncC6jEBRp0esory\/fSygQ5vI0kqTJUJQ2yAf+SsKuQoGXd3VzsfJnXug5SiPJmI9CSvlS8+ulBnjz2ht8lIyhFPz97mmcCAPhp2hkDQbbBxkuD\/PTkVfY1raDmWSGvOQ41HmIcnu5ybRzKwUtqrl6ohQFP2B16wuKo1uG2V2dYGRmhJ5SN+\/feY+hzQfxlQ8Czlp8CcjpHMY5rMsAmIivsr24k+\/teInu1s282HWM4YFhxmb\/w+lb77B3wx4u3bnIk517sc6hViUWESSKY+d7\/grCZUkQMMaQuQYnTp9gIp1kV2EnP973M1r9FhChntb4580zWAw\/v\/AqqUsoqAJ7Snt45amfoJUmNSnGGGYWZhivjjFRv8pg+37KG8sUvDwgyBIoaw1KlulyTRlWm1JCZg2z6SyJiXiv+i++fepr\/GniD+AcBb\/IwZ5DDHUdZKDwOCKa0BX44e6XUdKU31c+oR\/Sv76PQAI6cz3EacI7V0\/y69HXmZqbIrPZShko59zKdJb7RnZTuqJf5PjW4+Qlh0ZYSOd5rNjFao210hR0AU80OS\/gH5Pvktl0hWkAJZqh\/iG+uOVZRqOznF88T\/+6Ml2lTuJGnbgRk6Yp3jIryyd6yER4sTzMW9O\/ZzKaYH\/7AXaUdt6Tdgl6b0sf71c\/4MvlY+S8AAFu3rxBrV5b8hAcjlPX\/8ql+mUEOFcdoTftIU5jAi\/EWYOnlMKYDK29h8GssqIq0iItvPTp7xN64SowzUZ5vud5jMs40nuEnBcAwsyNGU7f+BubZCPKaTIyQgrsVU+RZilB5HPm8hmUaAIJKEoBz\/cD4jhCaf2QZPfOL3QWuvhSz1G6iz1remxt28aJth80YyxL5UCLh0OIdIxxGTkJaZCQ+SkBAS3Siuc83FJqD4EwzBPFEWEuh6wlnQiHu5+jHi3SMAm+DnDWPnRbC3KvtJzDGEPD7KKhMnybINZhRTCkeCgsHimKDMFaS6tedbnmwzxJEqO0xvf8+wE5eHrj0zgsSZrgKYeoZeAWEJyAuOasMy5Di0ZrzXQWgIZWrYmcQllLTgwNPBIsqbP4otDO0KINYqx1K\/UgkKUpaZYRBD5xFjFWHcc6Q5I1WMyqXLt9ja8\/8U0CHbCYVjk5fZKri2NUXY0kjZmqTzEb3eaJts+wtbqdHtdL4qCGR2JBIQgKg8VXDmsdoCgqQ1HsEqA1LG00qNQrvDXxO8biMVIynDj6cj30FcpEjYjJaJLb5g7iHE4E3Op\/Pcd+huima63wa1Th0uoenIaPaM45RNZuggffreX7cT7e\/4NHRNYM9EnvlvfLz\/\/Lx1sO9klBVif+OKCPcphH8fkvpBcMrHqyzIsAAAAASUVORK5CYII=\u0022 data-src=\u0022https:\/\/avris.it\/image\/metric-farmers_small.png\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022288\u0022\u003E\u003C\/span\u003E\n                \n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EOne Galleon is 17 Sickles and one Sickle is 29 Knuts... The wizarding currency isn\u2019t too simple or practical, is it? Muggles also have struggled for ages with overcomplicated, inconsistent systems of units. But then we adapted the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/International_System_of_Units\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E SI\u003C\/a\u003E \u2013 and since then we got used to using this simple, decimal system.\u003C\/p\u003E\n\u003Cp\u003EThere is one thing though that we still measure in strange units. 60 seconds go in a minute, 60 minutes go in an hour, 24 hours go in a day. There\u2019s 365 days in a year, except when it\u2019s 366, and they can be divided into 52 weeks of 7 days, with some days left over, or alternatively into 12 months of 28, 29, 30 or 31 days each, depending on... reasons.\u003C\/p\u003E\n\u003Cp\u003ECould we simplify all that mess?\u003C\/p\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","content":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/metric-farmers_big.png\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022500\u0022 height=\u0022300\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAVCAYAAAAuJkyQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGfUlEQVRIiZWW328U1xXHP+femdnZXRuvMRDb+McSTIHSEEioG6gsRFqUlKBYLQ\/9zUOrpk9IlSrlrVF\/PFap1D+gipRKfWny0OahrZRWhZQqpU1SDA6\/agf8A\/PLZu317szszL23D2sbA05Kz8udqzlzzvd+v+ecO2KMdQj3zIF1liSJEcBp4Xb1JvUkYqx6hchGTEfXqZh5kizmuwPfobetn7HZK\/SXysRpTC2t0Z5fz8W5SwSez0D7VuJGSqA9PPEARxDkUFrzoHmrN845JisVfvnhIov2FrtL77LYWOR85Ry9uW4CleNzXQeoxpeZiifY1zbIppYuPN\/jQu0Sb995m\/7iFkbnRrlem2Q0voCylnVeifZcBxZHX6GXtqCdVlp4bvNh+taXQeRhQNZablXmeOPqXbZ3tPHb8de4UjtLKAXag3aGHx\/mtSu\/YltpgC2tfWxt3wYI43fHqczd5fzcef698AGV9E0Qi6AQAYujYmaZjysYZ1HAvo59fHjnAh2FjdTrdcJ8iFJNtsQY66yzxHGEnwvxlCK1KUf++DrTSUSgYXfrR8w2ptje2sdX+77CMz0HaOrpGLl1ll+MvsqCqyIiGGsIdcBCNk\/qMrR4WCzagdNgjONbXcc53H+YzpYurDGkaYNcLkRp3WQoSWIK+WKTKoG\/TC9yau4FrGjAkaRz\/OjJFo5t2UCo8yBgsgylFSdvnOTZTV+gLShxYWGUu1mFgs4zMn8WXxuiLMLYhEwEl8K+ls+ya8NO5uMFutdtRimF5\/lEcZ0wzOMlSUyYy99XWLs7AgZLv2E2fYYDm7oYXF\/iGwOPIaiVwtfaY64+y7nKWcaicYY6Pk9O56mZGpdrV8hsg4ZtoJQgBBhncC6jEBRp0esory\/fSygQ5vI0kqTJUJQ2yAf+SsKuQoGXd3VzsfJnXug5SiPJmI9CSvlS8+ulBnjz2ht8lIyhFPz97mmcCAPhp2hkDQbbBxkuD\/PTkVfY1raDmWSGvOQ41HmIcnu5ybRzKwUtqrl6ohQFP2B16wuKo1uG2V2dYGRmhJ5SN+\/feY+hzQfxlQ8Czlp8CcjpHMY5rMsAmIivsr24k+\/teInu1s282HWM4YFhxmb\/w+lb77B3wx4u3bnIk517sc6hViUWESSKY+d7\/grCZUkQMMaQuQYnTp9gIp1kV2EnP973M1r9FhChntb4580zWAw\/v\/AqqUsoqAJ7Snt45amfoJUmNSnGGGYWZhivjjFRv8pg+37KG8sUvDwgyBIoaw1KlulyTRlWm1JCZg2z6SyJiXiv+i++fepr\/GniD+AcBb\/IwZ5DDHUdZKDwOCKa0BX44e6XUdKU31c+oR\/Sv76PQAI6cz3EacI7V0\/y69HXmZqbIrPZShko59zKdJb7RnZTuqJf5PjW4+Qlh0ZYSOd5rNjFao210hR0AU80OS\/gH5Pvktl0hWkAJZqh\/iG+uOVZRqOznF88T\/+6Ml2lTuJGnbgRk6Yp3jIryyd6yER4sTzMW9O\/ZzKaYH\/7AXaUdt6Tdgl6b0sf71c\/4MvlY+S8AAFu3rxBrV5b8hAcjlPX\/8ql+mUEOFcdoTftIU5jAi\/EWYOnlMKYDK29h8GssqIq0iItvPTp7xN64SowzUZ5vud5jMs40nuEnBcAwsyNGU7f+BubZCPKaTIyQgrsVU+RZilB5HPm8hmUaAIJKEoBz\/cD4jhCaf2QZPfOL3QWuvhSz1G6iz1remxt28aJth80YyxL5UCLh0OIdIxxGTkJaZCQ+SkBAS3Siuc83FJqD4EwzBPFEWEuh6wlnQiHu5+jHi3SMAm+DnDWPnRbC3KvtJzDGEPD7KKhMnybINZhRTCkeCgsHimKDMFaS6tedbnmwzxJEqO0xvf8+wE5eHrj0zgsSZrgKYeoZeAWEJyAuOasMy5Di0ZrzXQWgIZWrYmcQllLTgwNPBIsqbP4otDO0KINYqx1K\/UgkKUpaZYRBD5xFjFWHcc6Q5I1WMyqXLt9ja8\/8U0CHbCYVjk5fZKri2NUXY0kjZmqTzEb3eaJts+wtbqdHtdL4qCGR2JBIQgKg8VXDmsdoCgqQ1HsEqA1LG00qNQrvDXxO8biMVIynDj6cj30FcpEjYjJaJLb5g7iHE4E3Op\/Pcd+huima63wa1Th0uoenIaPaM45RNZuggffreX7cT7e\/4NHRNYM9EnvlvfLz\/\/Lx1sO9klBVif+OKCPcphH8fkvpBcMrHqyzIsAAAAASUVORK5CYII=\u0022 data-src=\u0022https:\/\/avris.it\/image\/metric-farmers_big.png\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022500\u0022 height=\u0022300\u0022\u003E\u003C\/span\u003E\n                \u003Cfigcaption\u003E\n                    \u003Ca href=\u0022https:\/\/me.me\/i\/countries-that-use-the-metric-system-countries-that-lose-wars-12549481\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\n                        \u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E\n                        me.me\/i\/countries-that-use-the-metric-system-countries-that-lose-wars-12549481\n                    \u003C\/a\u003E\n                \u003C\/figcaption\u003E\n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EOne Galleon is 17 Sickles and one Sickle is 29 Knuts... The wizarding currency isn\u2019t too simple or practical, is it? Muggles also have struggled for ages with overcomplicated, inconsistent systems of units. But then we adapted the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/International_System_of_Units\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E SI\u003C\/a\u003E \u2013 and since then we got used to using this simple, decimal system.\u003C\/p\u003E\n\u003Cp\u003EThere is one thing though that we still measure in strange units. 60 seconds go in a minute, 60 minutes go in an hour, 24 hours go in a day. There\u2019s 365 days in a year, except when it\u2019s 366, and they can be divided into 52 weeks of 7 days, with some days left over, or alternatively into 12 months of 28, 29, 30 or 31 days each, depending on... reasons.\u003C\/p\u003E\n\u003Cp\u003ECould we simplify all that mess?\u003C\/p\u003E\n\u003Cp\u003EOf course we could. I don\u2019t think we will though. Many people have tried and failed. Still, why not think about it, purely theoretically?\u003C\/p\u003E\n\u003Ch3\u003ETime\u003C\/h3\u003E\n\u003Cp\u003EA day is pretty easy to divide into 10-based fractions. If we divide current 24 hours into ten parts, we end up with 2.4 hour = 144 minute blocks. If we divide those in a hundred parts, we get blocks of 86.4 seconds. Both units (1\/10 of a day, and 1\/1000 of a day) seem to be just as useful units of time, as \u201chours\u201d and \u201cminutes\u201d. But instead of being a 24\u00d760\u00d760 system, it\u2019s the familiar 10\u00d710\u00d710.\u003C\/p\u003E\n\u003Cp\u003EThat\u2019s basically how \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/Swatch_Internet_Time\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E Swatch Internet Time\u003C\/a\u003E works. Simple and useful, what more could you wish for?\u003C\/p\u003E\n\u003Ch3\u003ETimezones \u0026amp; DST\u003C\/h3\u003E\n\u003Cp\u003EDaylight Saving Time is pass\u00e9. John Oliver \u003Ca href=\u0022https:\/\/www.youtube.com\/watch?v=br0NW9ufUUw\u0026ab_channel=LastWeekTonight\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E asks \u201cHow is it still a thing?\u201d\u003C\/a\u003E, the European Union \u003Ca href=\u0022https:\/\/www.dw.com\/en\/eu-to-stop-changing-the-clocks-juncker-pledges\/a-45300586\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E prepares to finally abolish it\u003C\/a\u003E. It\u2019s useless and just causes trouble.\u003C\/p\u003E\n\u003Cp\u003EAnd what about timezones? They\u2019re a huge improvement over local solar time already, but in this globalised world what if we got rid of them altogether? Instead of 14:00 in Berlin being 8:00 in Washington D.C., the same number would mean exactly the same moment in time. That\u2019s already how many computers keep time \u2013 as a number of seconds since 1970-01-01 00:00:00 UTC, they just display it differently for different people (see \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/Unix_time\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E Unix timestamp\u003C\/a\u003E). What if \u201c@500\u201d meant exactly the same moment, regardless of where you are? It just happens to be in the evening in Amsterdam, but around noon in New York.\u003C\/p\u003E\n\u003Ch3\u003ECalendar\u003C\/h3\u003E\n\u003Cp\u003EWhich day of week was November 19, 2013? Well, I know that, because it\u2019s my anniversary, but otherwise, I\u2019d have to look it up. We need calendars (or some extra effort counting days) to simply find out which day of month is it on the Thursday in two weeks. We need to take a moment to figure out how many days does February have this year...\u003C\/p\u003E\n\u003Cp\u003EWhat if there were no difference between \u201cmonth\u201d and \u201cweek\u201d? If dates were predictable, the same each year? If it was all 10-based?\u003C\/p\u003E\n\u003Cp\u003ESay hello to the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/French_Republican_Calendar\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E French Republican Calendar\u003C\/a\u003E, which does exactly that. I\u2019d rather use a slightly modified version, but the main idea stays the same:\u003C\/p\u003E\n\u003Cp\u003EThe year is split into 36 weeks of 10 days. The remaining 5 or 6 days form a special half-week and the end of year. If we start indexing from 0 (as we already do with time, the clock starts at 0:00, not at 1:01), we can easily see from the date, which week and which day was it \u2013 for example day 123 is the day 3 of week 12. Simple.\u003C\/p\u003E\n\u003Ch3\u003EDemo\u003C\/h3\u003E\n\u003Cp\u003EI\u2019ve decided to write a simple script that converts our current date and time into this decimal-based system. As a starting point I\u2019ve chosen the first day of spring, 2000-03-21 06:00 UTC (leap year rules stay the same).\u003C\/p\u003E\n\u003Cp\u003EHere\u2019s how it works in practice:\u003C\/p\u003E\n\u003Cdiv class=\u0022askara-clock text-center\u0022\u003E\n    \u003Cp class=\u0022h2 clock-output-askara\u0022\u003E\u0026nbsp;\u003C\/p\u003E\n    \u003Cp class=\u0022h4 clock-output-old\u0022\u003E\u0026nbsp;\u003C\/p\u003E\n    \u003Cp\u003E\n        \u003Cinput class=\u0022clock-input-time text-center\u0022 type=\u0022datetime-local\u0022 placeholder=\u0022Now\u0022\/\u003E\n    \u003C\/p\u003E\n    \u003Cp\u003E\n        \u003Cselect class=\u0022form-control select2 clock-input-timezone\u0022\u003E\n            \u003Coption value=\u0022Africa\/Abidjan\u0022 \u003EAfrica\/Abidjan\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Accra\u0022 \u003EAfrica\/Accra\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Addis_Ababa\u0022 \u003EAfrica\/Addis_Ababa\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Algiers\u0022 \u003EAfrica\/Algiers\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Asmara\u0022 \u003EAfrica\/Asmara\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bamako\u0022 \u003EAfrica\/Bamako\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bangui\u0022 \u003EAfrica\/Bangui\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Banjul\u0022 \u003EAfrica\/Banjul\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bissau\u0022 \u003EAfrica\/Bissau\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Blantyre\u0022 \u003EAfrica\/Blantyre\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Brazzaville\u0022 \u003EAfrica\/Brazzaville\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bujumbura\u0022 \u003EAfrica\/Bujumbura\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Cairo\u0022 \u003EAfrica\/Cairo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Casablanca\u0022 \u003EAfrica\/Casablanca\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ceuta\u0022 \u003EAfrica\/Ceuta\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Conakry\u0022 \u003EAfrica\/Conakry\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Dakar\u0022 \u003EAfrica\/Dakar\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Dar_es_Salaam\u0022 \u003EAfrica\/Dar_es_Salaam\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Djibouti\u0022 \u003EAfrica\/Djibouti\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Douala\u0022 \u003EAfrica\/Douala\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/El_Aaiun\u0022 \u003EAfrica\/El_Aaiun\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Freetown\u0022 \u003EAfrica\/Freetown\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Gaborone\u0022 \u003EAfrica\/Gaborone\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Harare\u0022 \u003EAfrica\/Harare\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Johannesburg\u0022 \u003EAfrica\/Johannesburg\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Juba\u0022 \u003EAfrica\/Juba\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kampala\u0022 \u003EAfrica\/Kampala\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Khartoum\u0022 \u003EAfrica\/Khartoum\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kigali\u0022 \u003EAfrica\/Kigali\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kinshasa\u0022 \u003EAfrica\/Kinshasa\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lagos\u0022 \u003EAfrica\/Lagos\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Libreville\u0022 \u003EAfrica\/Libreville\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lome\u0022 \u003EAfrica\/Lome\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Luanda\u0022 \u003EAfrica\/Luanda\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lubumbashi\u0022 \u003EAfrica\/Lubumbashi\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lusaka\u0022 \u003EAfrica\/Lusaka\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Malabo\u0022 \u003EAfrica\/Malabo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Maputo\u0022 \u003EAfrica\/Maputo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Maseru\u0022 \u003EAfrica\/Maseru\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Mbabane\u0022 \u003EAfrica\/Mbabane\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Mogadishu\u0022 \u003EAfrica\/Mogadishu\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Monrovia\u0022 \u003EAfrica\/Monrovia\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Nairobi\u0022 \u003EAfrica\/Nairobi\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ndjamena\u0022 \u003EAfrica\/Ndjamena\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Niamey\u0022 \u003EAfrica\/Niamey\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Nouakchott\u0022 \u003EAfrica\/Nouakchott\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ouagadougou\u0022 \u003EAfrica\/Ouagadougou\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Porto-Novo\u0022 \u003EAfrica\/Porto-Novo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Sao_Tome\u0022 \u003EAfrica\/Sao_Tome\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Tripoli\u0022 \u003EAfrica\/Tripoli\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Tunis\u0022 \u003EAfrica\/Tunis\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Windhoek\u0022 \u003EAfrica\/Windhoek\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Adak\u0022 \u003EAmerica\/Adak\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Anchorage\u0022 \u003EAmerica\/Anchorage\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Anguilla\u0022 \u003EAmerica\/Anguilla\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Antigua\u0022 \u003EAmerica\/Antigua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Araguaina\u0022 \u003EAmerica\/Araguaina\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Buenos_Aires\u0022 \u003EAmerica\/Argentina\/Buenos_Aires\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Catamarca\u0022 \u003EAmerica\/Argentina\/Catamarca\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Cordoba\u0022 \u003EAmerica\/Argentina\/Cordoba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Jujuy\u0022 \u003EAmerica\/Argentina\/Jujuy\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/La_Rioja\u0022 \u003EAmerica\/Argentina\/La_Rioja\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Mendoza\u0022 \u003EAmerica\/Argentina\/Mendoza\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Rio_Gallegos\u0022 \u003EAmerica\/Argentina\/Rio_Gallegos\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Salta\u0022 \u003EAmerica\/Argentina\/Salta\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/San_Juan\u0022 \u003EAmerica\/Argentina\/San_Juan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/San_Luis\u0022 \u003EAmerica\/Argentina\/San_Luis\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Tucuman\u0022 \u003EAmerica\/Argentina\/Tucuman\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Ushuaia\u0022 \u003EAmerica\/Argentina\/Ushuaia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Aruba\u0022 \u003EAmerica\/Aruba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Asuncion\u0022 \u003EAmerica\/Asuncion\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Atikokan\u0022 \u003EAmerica\/Atikokan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bahia\u0022 \u003EAmerica\/Bahia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bahia_Banderas\u0022 \u003EAmerica\/Bahia_Banderas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Barbados\u0022 \u003EAmerica\/Barbados\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Belem\u0022 \u003EAmerica\/Belem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Belize\u0022 \u003EAmerica\/Belize\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Blanc-Sablon\u0022 \u003EAmerica\/Blanc-Sablon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Boa_Vista\u0022 \u003EAmerica\/Boa_Vista\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bogota\u0022 \u003EAmerica\/Bogota\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Boise\u0022 \u003EAmerica\/Boise\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cambridge_Bay\u0022 \u003EAmerica\/Cambridge_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Campo_Grande\u0022 \u003EAmerica\/Campo_Grande\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cancun\u0022 \u003EAmerica\/Cancun\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Caracas\u0022 \u003EAmerica\/Caracas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cayenne\u0022 \u003EAmerica\/Cayenne\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cayman\u0022 \u003EAmerica\/Cayman\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Chicago\u0022 \u003EAmerica\/Chicago\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Chihuahua\u0022 \u003EAmerica\/Chihuahua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Costa_Rica\u0022 \u003EAmerica\/Costa_Rica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Creston\u0022 \u003EAmerica\/Creston\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cuiaba\u0022 \u003EAmerica\/Cuiaba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Curacao\u0022 \u003EAmerica\/Curacao\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Danmarkshavn\u0022 \u003EAmerica\/Danmarkshavn\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dawson\u0022 \u003EAmerica\/Dawson\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dawson_Creek\u0022 \u003EAmerica\/Dawson_Creek\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Denver\u0022 \u003EAmerica\/Denver\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Detroit\u0022 \u003EAmerica\/Detroit\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dominica\u0022 \u003EAmerica\/Dominica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Edmonton\u0022 \u003EAmerica\/Edmonton\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Eirunepe\u0022 \u003EAmerica\/Eirunepe\u003C\/option\u003E\n            \u003Coption value=\u0022America\/El_Salvador\u0022 \u003EAmerica\/El_Salvador\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Fort_Nelson\u0022 \u003EAmerica\/Fort_Nelson\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Fortaleza\u0022 \u003EAmerica\/Fortaleza\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Glace_Bay\u0022 \u003EAmerica\/Glace_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Godthab\u0022 \u003EAmerica\/Godthab\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Goose_Bay\u0022 \u003EAmerica\/Goose_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Grand_Turk\u0022 \u003EAmerica\/Grand_Turk\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Grenada\u0022 \u003EAmerica\/Grenada\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guadeloupe\u0022 \u003EAmerica\/Guadeloupe\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guatemala\u0022 \u003EAmerica\/Guatemala\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guayaquil\u0022 \u003EAmerica\/Guayaquil\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guyana\u0022 \u003EAmerica\/Guyana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Halifax\u0022 \u003EAmerica\/Halifax\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Havana\u0022 \u003EAmerica\/Havana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Hermosillo\u0022 \u003EAmerica\/Hermosillo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Indianapolis\u0022 \u003EAmerica\/Indiana\/Indianapolis\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Knox\u0022 \u003EAmerica\/Indiana\/Knox\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Marengo\u0022 \u003EAmerica\/Indiana\/Marengo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Petersburg\u0022 \u003EAmerica\/Indiana\/Petersburg\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Tell_City\u0022 \u003EAmerica\/Indiana\/Tell_City\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Vevay\u0022 \u003EAmerica\/Indiana\/Vevay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Vincennes\u0022 \u003EAmerica\/Indiana\/Vincennes\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Winamac\u0022 \u003EAmerica\/Indiana\/Winamac\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Inuvik\u0022 \u003EAmerica\/Inuvik\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Iqaluit\u0022 \u003EAmerica\/Iqaluit\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Jamaica\u0022 \u003EAmerica\/Jamaica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Juneau\u0022 \u003EAmerica\/Juneau\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kentucky\/Louisville\u0022 \u003EAmerica\/Kentucky\/Louisville\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kentucky\/Monticello\u0022 \u003EAmerica\/Kentucky\/Monticello\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kralendijk\u0022 \u003EAmerica\/Kralendijk\u003C\/option\u003E\n            \u003Coption value=\u0022America\/La_Paz\u0022 \u003EAmerica\/La_Paz\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Lima\u0022 \u003EAmerica\/Lima\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Los_Angeles\u0022 \u003EAmerica\/Los_Angeles\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Lower_Princes\u0022 \u003EAmerica\/Lower_Princes\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Maceio\u0022 \u003EAmerica\/Maceio\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Managua\u0022 \u003EAmerica\/Managua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Manaus\u0022 \u003EAmerica\/Manaus\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Marigot\u0022 \u003EAmerica\/Marigot\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Martinique\u0022 \u003EAmerica\/Martinique\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Matamoros\u0022 \u003EAmerica\/Matamoros\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Mazatlan\u0022 \u003EAmerica\/Mazatlan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Menominee\u0022 \u003EAmerica\/Menominee\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Merida\u0022 \u003EAmerica\/Merida\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Metlakatla\u0022 \u003EAmerica\/Metlakatla\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Mexico_City\u0022 \u003EAmerica\/Mexico_City\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Miquelon\u0022 \u003EAmerica\/Miquelon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Moncton\u0022 \u003EAmerica\/Moncton\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Monterrey\u0022 \u003EAmerica\/Monterrey\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Montevideo\u0022 \u003EAmerica\/Montevideo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Montserrat\u0022 \u003EAmerica\/Montserrat\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nassau\u0022 \u003EAmerica\/Nassau\u003C\/option\u003E\n            \u003Coption value=\u0022America\/New_York\u0022 \u003EAmerica\/New_York\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nipigon\u0022 \u003EAmerica\/Nipigon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nome\u0022 \u003EAmerica\/Nome\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Noronha\u0022 \u003EAmerica\/Noronha\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/Beulah\u0022 \u003EAmerica\/North_Dakota\/Beulah\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/Center\u0022 \u003EAmerica\/North_Dakota\/Center\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/New_Salem\u0022 \u003EAmerica\/North_Dakota\/New_Salem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Ojinaga\u0022 \u003EAmerica\/Ojinaga\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Panama\u0022 \u003EAmerica\/Panama\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Pangnirtung\u0022 \u003EAmerica\/Pangnirtung\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Paramaribo\u0022 \u003EAmerica\/Paramaribo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Phoenix\u0022 \u003EAmerica\/Phoenix\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Port-au-Prince\u0022 \u003EAmerica\/Port-au-Prince\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Port_of_Spain\u0022 \u003EAmerica\/Port_of_Spain\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Porto_Velho\u0022 \u003EAmerica\/Porto_Velho\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Puerto_Rico\u0022 \u003EAmerica\/Puerto_Rico\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Punta_Arenas\u0022 \u003EAmerica\/Punta_Arenas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rainy_River\u0022 \u003EAmerica\/Rainy_River\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rankin_Inlet\u0022 \u003EAmerica\/Rankin_Inlet\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Recife\u0022 \u003EAmerica\/Recife\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Regina\u0022 \u003EAmerica\/Regina\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Resolute\u0022 \u003EAmerica\/Resolute\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rio_Branco\u0022 \u003EAmerica\/Rio_Branco\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santarem\u0022 \u003EAmerica\/Santarem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santiago\u0022 \u003EAmerica\/Santiago\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santo_Domingo\u0022 \u003EAmerica\/Santo_Domingo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Sao_Paulo\u0022 \u003EAmerica\/Sao_Paulo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Scoresbysund\u0022 \u003EAmerica\/Scoresbysund\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Sitka\u0022 \u003EAmerica\/Sitka\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Barthelemy\u0022 \u003EAmerica\/St_Barthelemy\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Johns\u0022 \u003EAmerica\/St_Johns\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Kitts\u0022 \u003EAmerica\/St_Kitts\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Lucia\u0022 \u003EAmerica\/St_Lucia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Thomas\u0022 \u003EAmerica\/St_Thomas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Vincent\u0022 \u003EAmerica\/St_Vincent\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Swift_Current\u0022 \u003EAmerica\/Swift_Current\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tegucigalpa\u0022 \u003EAmerica\/Tegucigalpa\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Thule\u0022 \u003EAmerica\/Thule\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Thunder_Bay\u0022 \u003EAmerica\/Thunder_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tijuana\u0022 \u003EAmerica\/Tijuana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Toronto\u0022 \u003EAmerica\/Toronto\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tortola\u0022 \u003EAmerica\/Tortola\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Vancouver\u0022 \u003EAmerica\/Vancouver\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Whitehorse\u0022 \u003EAmerica\/Whitehorse\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Winnipeg\u0022 \u003EAmerica\/Winnipeg\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Yakutat\u0022 \u003EAmerica\/Yakutat\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Yellowknife\u0022 \u003EAmerica\/Yellowknife\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Casey\u0022 \u003EAntarctica\/Casey\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Davis\u0022 \u003EAntarctica\/Davis\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/DumontDUrville\u0022 \u003EAntarctica\/DumontDUrville\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Macquarie\u0022 \u003EAntarctica\/Macquarie\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Mawson\u0022 \u003EAntarctica\/Mawson\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/McMurdo\u0022 \u003EAntarctica\/McMurdo\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Palmer\u0022 \u003EAntarctica\/Palmer\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Rothera\u0022 \u003EAntarctica\/Rothera\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Syowa\u0022 \u003EAntarctica\/Syowa\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Troll\u0022 \u003EAntarctica\/Troll\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Vostok\u0022 \u003EAntarctica\/Vostok\u003C\/option\u003E\n            \u003Coption value=\u0022Arctic\/Longyearbyen\u0022 \u003EArctic\/Longyearbyen\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aden\u0022 \u003EAsia\/Aden\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Almaty\u0022 \u003EAsia\/Almaty\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Amman\u0022 \u003EAsia\/Amman\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Anadyr\u0022 \u003EAsia\/Anadyr\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aqtau\u0022 \u003EAsia\/Aqtau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aqtobe\u0022 \u003EAsia\/Aqtobe\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ashgabat\u0022 \u003EAsia\/Ashgabat\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Atyrau\u0022 \u003EAsia\/Atyrau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Baghdad\u0022 \u003EAsia\/Baghdad\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bahrain\u0022 \u003EAsia\/Bahrain\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Baku\u0022 \u003EAsia\/Baku\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bangkok\u0022 \u003EAsia\/Bangkok\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Barnaul\u0022 \u003EAsia\/Barnaul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Beirut\u0022 \u003EAsia\/Beirut\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bishkek\u0022 \u003EAsia\/Bishkek\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Brunei\u0022 \u003EAsia\/Brunei\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Chita\u0022 \u003EAsia\/Chita\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Choibalsan\u0022 \u003EAsia\/Choibalsan\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Colombo\u0022 \u003EAsia\/Colombo\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Damascus\u0022 \u003EAsia\/Damascus\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dhaka\u0022 \u003EAsia\/Dhaka\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dili\u0022 \u003EAsia\/Dili\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dubai\u0022 \u003EAsia\/Dubai\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dushanbe\u0022 \u003EAsia\/Dushanbe\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Famagusta\u0022 \u003EAsia\/Famagusta\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Gaza\u0022 \u003EAsia\/Gaza\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hebron\u0022 \u003EAsia\/Hebron\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ho_Chi_Minh\u0022 \u003EAsia\/Ho_Chi_Minh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hong_Kong\u0022 \u003EAsia\/Hong_Kong\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hovd\u0022 \u003EAsia\/Hovd\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Irkutsk\u0022 \u003EAsia\/Irkutsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jakarta\u0022 \u003EAsia\/Jakarta\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jayapura\u0022 \u003EAsia\/Jayapura\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jerusalem\u0022 \u003EAsia\/Jerusalem\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kabul\u0022 \u003EAsia\/Kabul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kamchatka\u0022 \u003EAsia\/Kamchatka\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Karachi\u0022 \u003EAsia\/Karachi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kathmandu\u0022 \u003EAsia\/Kathmandu\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Khandyga\u0022 \u003EAsia\/Khandyga\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kolkata\u0022 \u003EAsia\/Kolkata\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Krasnoyarsk\u0022 \u003EAsia\/Krasnoyarsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuala_Lumpur\u0022 \u003EAsia\/Kuala_Lumpur\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuching\u0022 \u003EAsia\/Kuching\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuwait\u0022 \u003EAsia\/Kuwait\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Macau\u0022 \u003EAsia\/Macau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Magadan\u0022 \u003EAsia\/Magadan\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Makassar\u0022 \u003EAsia\/Makassar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Manila\u0022 \u003EAsia\/Manila\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Muscat\u0022 \u003EAsia\/Muscat\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Nicosia\u0022 \u003EAsia\/Nicosia\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Novokuznetsk\u0022 \u003EAsia\/Novokuznetsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Novosibirsk\u0022 \u003EAsia\/Novosibirsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Omsk\u0022 \u003EAsia\/Omsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Oral\u0022 \u003EAsia\/Oral\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Phnom_Penh\u0022 \u003EAsia\/Phnom_Penh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Pontianak\u0022 \u003EAsia\/Pontianak\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Pyongyang\u0022 \u003EAsia\/Pyongyang\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Qatar\u0022 \u003EAsia\/Qatar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Qyzylorda\u0022 \u003EAsia\/Qyzylorda\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Riyadh\u0022 \u003EAsia\/Riyadh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Sakhalin\u0022 \u003EAsia\/Sakhalin\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Samarkand\u0022 \u003EAsia\/Samarkand\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Seoul\u0022 \u003EAsia\/Seoul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Shanghai\u0022 \u003EAsia\/Shanghai\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Singapore\u0022 \u003EAsia\/Singapore\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Srednekolymsk\u0022 \u003EAsia\/Srednekolymsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Taipei\u0022 \u003EAsia\/Taipei\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tashkent\u0022 \u003EAsia\/Tashkent\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tbilisi\u0022 \u003EAsia\/Tbilisi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tehran\u0022 \u003EAsia\/Tehran\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Thimphu\u0022 \u003EAsia\/Thimphu\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tokyo\u0022 \u003EAsia\/Tokyo\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tomsk\u0022 \u003EAsia\/Tomsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ulaanbaatar\u0022 \u003EAsia\/Ulaanbaatar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Urumqi\u0022 \u003EAsia\/Urumqi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ust-Nera\u0022 \u003EAsia\/Ust-Nera\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Vientiane\u0022 \u003EAsia\/Vientiane\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Vladivostok\u0022 \u003EAsia\/Vladivostok\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yakutsk\u0022 \u003EAsia\/Yakutsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yangon\u0022 \u003EAsia\/Yangon\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yekaterinburg\u0022 \u003EAsia\/Yekaterinburg\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yerevan\u0022 \u003EAsia\/Yerevan\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Azores\u0022 \u003EAtlantic\/Azores\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Bermuda\u0022 \u003EAtlantic\/Bermuda\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Canary\u0022 \u003EAtlantic\/Canary\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Cape_Verde\u0022 \u003EAtlantic\/Cape_Verde\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Faroe\u0022 \u003EAtlantic\/Faroe\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Madeira\u0022 \u003EAtlantic\/Madeira\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Reykjavik\u0022 \u003EAtlantic\/Reykjavik\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/South_Georgia\u0022 \u003EAtlantic\/South_Georgia\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/St_Helena\u0022 \u003EAtlantic\/St_Helena\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Stanley\u0022 \u003EAtlantic\/Stanley\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Adelaide\u0022 \u003EAustralia\/Adelaide\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Brisbane\u0022 \u003EAustralia\/Brisbane\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Broken_Hill\u0022 \u003EAustralia\/Broken_Hill\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Currie\u0022 \u003EAustralia\/Currie\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Darwin\u0022 \u003EAustralia\/Darwin\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Eucla\u0022 \u003EAustralia\/Eucla\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Hobart\u0022 \u003EAustralia\/Hobart\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Lindeman\u0022 \u003EAustralia\/Lindeman\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Lord_Howe\u0022 \u003EAustralia\/Lord_Howe\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Melbourne\u0022 \u003EAustralia\/Melbourne\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Perth\u0022 \u003EAustralia\/Perth\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Sydney\u0022 \u003EAustralia\/Sydney\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Amsterdam\u0022 \u003EEurope\/Amsterdam\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Andorra\u0022 \u003EEurope\/Andorra\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Astrakhan\u0022 \u003EEurope\/Astrakhan\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Athens\u0022 \u003EEurope\/Athens\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Belgrade\u0022 \u003EEurope\/Belgrade\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Berlin\u0022 \u003EEurope\/Berlin\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Bratislava\u0022 \u003EEurope\/Bratislava\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Brussels\u0022 \u003EEurope\/Brussels\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Bucharest\u0022 \u003EEurope\/Bucharest\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Budapest\u0022 \u003EEurope\/Budapest\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Busingen\u0022 \u003EEurope\/Busingen\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Chisinau\u0022 \u003EEurope\/Chisinau\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Copenhagen\u0022 \u003EEurope\/Copenhagen\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Dublin\u0022 \u003EEurope\/Dublin\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Gibraltar\u0022 \u003EEurope\/Gibraltar\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Guernsey\u0022 \u003EEurope\/Guernsey\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Helsinki\u0022 \u003EEurope\/Helsinki\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Isle_of_Man\u0022 \u003EEurope\/Isle_of_Man\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Istanbul\u0022 \u003EEurope\/Istanbul\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Jersey\u0022 \u003EEurope\/Jersey\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kaliningrad\u0022 \u003EEurope\/Kaliningrad\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kiev\u0022 \u003EEurope\/Kiev\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kirov\u0022 \u003EEurope\/Kirov\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Lisbon\u0022 \u003EEurope\/Lisbon\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Ljubljana\u0022 \u003EEurope\/Ljubljana\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/London\u0022 \u003EEurope\/London\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Luxembourg\u0022 \u003EEurope\/Luxembourg\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Madrid\u0022 \u003EEurope\/Madrid\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Malta\u0022 \u003EEurope\/Malta\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Mariehamn\u0022 \u003EEurope\/Mariehamn\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Minsk\u0022 \u003EEurope\/Minsk\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Monaco\u0022 \u003EEurope\/Monaco\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Moscow\u0022 \u003EEurope\/Moscow\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Oslo\u0022 \u003EEurope\/Oslo\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Paris\u0022 \u003EEurope\/Paris\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Podgorica\u0022 \u003EEurope\/Podgorica\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Prague\u0022 \u003EEurope\/Prague\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Riga\u0022 \u003EEurope\/Riga\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Rome\u0022 \u003EEurope\/Rome\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Samara\u0022 \u003EEurope\/Samara\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/San_Marino\u0022 \u003EEurope\/San_Marino\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Sarajevo\u0022 \u003EEurope\/Sarajevo\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Saratov\u0022 \u003EEurope\/Saratov\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Simferopol\u0022 \u003EEurope\/Simferopol\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Skopje\u0022 \u003EEurope\/Skopje\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Sofia\u0022 \u003EEurope\/Sofia\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Stockholm\u0022 \u003EEurope\/Stockholm\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Tallinn\u0022 \u003EEurope\/Tallinn\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Tirane\u0022 \u003EEurope\/Tirane\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Ulyanovsk\u0022 \u003EEurope\/Ulyanovsk\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Uzhgorod\u0022 \u003EEurope\/Uzhgorod\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vaduz\u0022 \u003EEurope\/Vaduz\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vatican\u0022 \u003EEurope\/Vatican\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vienna\u0022 \u003EEurope\/Vienna\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vilnius\u0022 \u003EEurope\/Vilnius\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Volgograd\u0022 \u003EEurope\/Volgograd\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Warsaw\u0022 \u003EEurope\/Warsaw\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zagreb\u0022 \u003EEurope\/Zagreb\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zaporozhye\u0022 \u003EEurope\/Zaporozhye\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zurich\u0022 \u003EEurope\/Zurich\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Antananarivo\u0022 \u003EIndian\/Antananarivo\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Chagos\u0022 \u003EIndian\/Chagos\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Christmas\u0022 \u003EIndian\/Christmas\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Cocos\u0022 \u003EIndian\/Cocos\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Comoro\u0022 \u003EIndian\/Comoro\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Kerguelen\u0022 \u003EIndian\/Kerguelen\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mahe\u0022 \u003EIndian\/Mahe\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Maldives\u0022 \u003EIndian\/Maldives\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mauritius\u0022 \u003EIndian\/Mauritius\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mayotte\u0022 \u003EIndian\/Mayotte\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Reunion\u0022 \u003EIndian\/Reunion\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Apia\u0022 \u003EPacific\/Apia\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Auckland\u0022 \u003EPacific\/Auckland\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Bougainville\u0022 \u003EPacific\/Bougainville\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Chatham\u0022 \u003EPacific\/Chatham\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Chuuk\u0022 \u003EPacific\/Chuuk\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Easter\u0022 \u003EPacific\/Easter\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Efate\u0022 \u003EPacific\/Efate\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Enderbury\u0022 \u003EPacific\/Enderbury\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Fakaofo\u0022 \u003EPacific\/Fakaofo\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Fiji\u0022 \u003EPacific\/Fiji\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Funafuti\u0022 \u003EPacific\/Funafuti\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Galapagos\u0022 \u003EPacific\/Galapagos\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Gambier\u0022 \u003EPacific\/Gambier\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Guadalcanal\u0022 \u003EPacific\/Guadalcanal\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Guam\u0022 \u003EPacific\/Guam\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Honolulu\u0022 \u003EPacific\/Honolulu\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kiritimati\u0022 \u003EPacific\/Kiritimati\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kosrae\u0022 \u003EPacific\/Kosrae\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kwajalein\u0022 \u003EPacific\/Kwajalein\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Majuro\u0022 \u003EPacific\/Majuro\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Marquesas\u0022 \u003EPacific\/Marquesas\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Midway\u0022 \u003EPacific\/Midway\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Nauru\u0022 \u003EPacific\/Nauru\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Niue\u0022 \u003EPacific\/Niue\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Norfolk\u0022 \u003EPacific\/Norfolk\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Noumea\u0022 \u003EPacific\/Noumea\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pago_Pago\u0022 \u003EPacific\/Pago_Pago\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Palau\u0022 \u003EPacific\/Palau\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pitcairn\u0022 \u003EPacific\/Pitcairn\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pohnpei\u0022 \u003EPacific\/Pohnpei\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Port_Moresby\u0022 \u003EPacific\/Port_Moresby\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Rarotonga\u0022 \u003EPacific\/Rarotonga\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Saipan\u0022 \u003EPacific\/Saipan\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tahiti\u0022 \u003EPacific\/Tahiti\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tarawa\u0022 \u003EPacific\/Tarawa\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tongatapu\u0022 \u003EPacific\/Tongatapu\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Wake\u0022 \u003EPacific\/Wake\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Wallis\u0022 \u003EPacific\/Wallis\u003C\/option\u003E\n            \u003Coption value=\u0022UTC\u0022 selected\u003EUTC\u003C\/option\u003E\n        \u003C\/select\u003E\n    \u003C\/p\u003E\n\u003C\/div\u003E\n\u003Cscript src=\u0022https:\/\/avris.it\/file\/askara-clock.js\u0022\u003E\u003C\/script\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","tags":["calendar","clock","datetime","decimal","innovation","normalisation","revolution","si","simple","simplicity","simplification","system","time","units"],"hasMore":true,"image":"https:\/\/avris.it\/image\/metric-farmers_small.png","introLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/metric-farmers_big.png\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/metric-farmers_mini.png\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022144\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EOne Galleon is 17 Sickles and one Sickle is 29 Knuts... The wizarding currency isn\u2019t too simple or practical, is it? Muggles also have struggled for ages with overcomplicated, inconsistent systems of units. But then we adapted the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/International_System_of_Units\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E SI\u003C\/a\u003E \u2013 and since then we got used to using this simple, decimal system.\u003C\/p\u003E\n\u003Cp\u003EThere is one thing though that we still measure in strange units. 60 seconds go in a minute, 60 minutes go in an hour, 24 hours go in a day. There\u2019s 365 days in a year, except when it\u2019s 366, and they can be divided into 52 weeks of 7 days, with some days left over, or alternatively into 12 months of 28, 29, 30 or 31 days each, depending on... reasons.\u003C\/p\u003E\n\u003Cp\u003ECould we simplify all that mess?\u003C\/p\u003E","contentLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/metric-farmers_big.png\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/metric-farmers_mini.png\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022144\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003Cfigcaption\u003E\n                    \u003Ca href=\u0022https:\/\/me.me\/i\/countries-that-use-the-metric-system-countries-that-lose-wars-12549481\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csmall\u003Eme.me\/i\/countries-that-use-the-metric-system-countries-that-lose-wars-12549481\u003C\/small\u003E\u003C\/a\u003E\n                \u003C\/figcaption\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EOne Galleon is 17 Sickles and one Sickle is 29 Knuts... The wizarding currency isn\u2019t too simple or practical, is it? Muggles also have struggled for ages with overcomplicated, inconsistent systems of units. But then we adapted the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/International_System_of_Units\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E SI\u003C\/a\u003E \u2013 and since then we got used to using this simple, decimal system.\u003C\/p\u003E\n\u003Cp\u003EThere is one thing though that we still measure in strange units. 60 seconds go in a minute, 60 minutes go in an hour, 24 hours go in a day. There\u2019s 365 days in a year, except when it\u2019s 366, and they can be divided into 52 weeks of 7 days, with some days left over, or alternatively into 12 months of 28, 29, 30 or 31 days each, depending on... reasons.\u003C\/p\u003E\n\u003Cp\u003ECould we simplify all that mess?\u003C\/p\u003E\n\u003Cp\u003EOf course we could. I don\u2019t think we will though. Many people have tried and failed. Still, why not think about it, purely theoretically?\u003C\/p\u003E\n\u003Ch3\u003ETime\u003C\/h3\u003E\n\u003Cp\u003EA day is pretty easy to divide into 10-based fractions. If we divide current 24 hours into ten parts, we end up with 2.4 hour = 144 minute blocks. If we divide those in a hundred parts, we get blocks of 86.4 seconds. Both units (1\/10 of a day, and 1\/1000 of a day) seem to be just as useful units of time, as \u201chours\u201d and \u201cminutes\u201d. But instead of being a 24\u00d760\u00d760 system, it\u2019s the familiar 10\u00d710\u00d710.\u003C\/p\u003E\n\u003Cp\u003EThat\u2019s basically how \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/Swatch_Internet_Time\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E Swatch Internet Time\u003C\/a\u003E works. Simple and useful, what more could you wish for?\u003C\/p\u003E\n\u003Ch3\u003ETimezones \u0026amp; DST\u003C\/h3\u003E\n\u003Cp\u003EDaylight Saving Time is pass\u00e9. John Oliver \u003Ca href=\u0022https:\/\/www.youtube.com\/watch?v=br0NW9ufUUw\u0026ab_channel=LastWeekTonight\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E asks \u201cHow is it still a thing?\u201d\u003C\/a\u003E, the European Union \u003Ca href=\u0022https:\/\/www.dw.com\/en\/eu-to-stop-changing-the-clocks-juncker-pledges\/a-45300586\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E prepares to finally abolish it\u003C\/a\u003E. It\u2019s useless and just causes trouble.\u003C\/p\u003E\n\u003Cp\u003EAnd what about timezones? They\u2019re a huge improvement over local solar time already, but in this globalised world what if we got rid of them altogether? Instead of 14:00 in Berlin being 8:00 in Washington D.C., the same number would mean exactly the same moment in time. That\u2019s already how many computers keep time \u2013 as a number of seconds since 1970-01-01 00:00:00 UTC, they just display it differently for different people (see \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/Unix_time\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E Unix timestamp\u003C\/a\u003E). What if \u201c@500\u201d meant exactly the same moment, regardless of where you are? It just happens to be in the evening in Amsterdam, but around noon in New York.\u003C\/p\u003E\n\u003Ch3\u003ECalendar\u003C\/h3\u003E\n\u003Cp\u003EWhich day of week was November 19, 2013? Well, I know that, because it\u2019s my anniversary, but otherwise, I\u2019d have to look it up. We need calendars (or some extra effort counting days) to simply find out which day of month is it on the Thursday in two weeks. We need to take a moment to figure out how many days does February have this year...\u003C\/p\u003E\n\u003Cp\u003EWhat if there were no difference between \u201cmonth\u201d and \u201cweek\u201d? If dates were predictable, the same each year? If it was all 10-based?\u003C\/p\u003E\n\u003Cp\u003ESay hello to the \u003Ca href=\u0022https:\/\/en.wikipedia.org\/wiki\/French_Republican_Calendar\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E French Republican Calendar\u003C\/a\u003E, which does exactly that. I\u2019d rather use a slightly modified version, but the main idea stays the same:\u003C\/p\u003E\n\u003Cp\u003EThe year is split into 36 weeks of 10 days. The remaining 5 or 6 days form a special half-week and the end of year. If we start indexing from 0 (as we already do with time, the clock starts at 0:00, not at 1:01), we can easily see from the date, which week and which day was it \u2013 for example day 123 is the day 3 of week 12. Simple.\u003C\/p\u003E\n\u003Ch3\u003EDemo\u003C\/h3\u003E\n\u003Cp\u003EI\u2019ve decided to write a simple script that converts our current date and time into this decimal-based system. As a starting point I\u2019ve chosen the first day of spring, 2000-03-21 06:00 UTC (leap year rules stay the same).\u003C\/p\u003E\n\u003Cp\u003EHere\u2019s how it works in practice:\u003C\/p\u003E\n\u003Cdiv class=\u0022askara-clock text-center\u0022\u003E\n    \u003Cp class=\u0022h2 clock-output-askara\u0022\u003E\u0026nbsp;\u003C\/p\u003E\n    \u003Cp class=\u0022h4 clock-output-old\u0022\u003E\u0026nbsp;\u003C\/p\u003E\n    \u003Cp\u003E\n        \u003Cinput class=\u0022clock-input-time text-center\u0022 type=\u0022datetime-local\u0022 placeholder=\u0022Now\u0022\/\u003E\n    \u003C\/p\u003E\n    \u003Cp\u003E\n        \u003Cselect class=\u0022form-control select2 clock-input-timezone\u0022\u003E\n            \u003Coption value=\u0022Africa\/Abidjan\u0022 \u003EAfrica\/Abidjan\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Accra\u0022 \u003EAfrica\/Accra\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Addis_Ababa\u0022 \u003EAfrica\/Addis_Ababa\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Algiers\u0022 \u003EAfrica\/Algiers\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Asmara\u0022 \u003EAfrica\/Asmara\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bamako\u0022 \u003EAfrica\/Bamako\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bangui\u0022 \u003EAfrica\/Bangui\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Banjul\u0022 \u003EAfrica\/Banjul\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bissau\u0022 \u003EAfrica\/Bissau\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Blantyre\u0022 \u003EAfrica\/Blantyre\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Brazzaville\u0022 \u003EAfrica\/Brazzaville\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Bujumbura\u0022 \u003EAfrica\/Bujumbura\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Cairo\u0022 \u003EAfrica\/Cairo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Casablanca\u0022 \u003EAfrica\/Casablanca\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ceuta\u0022 \u003EAfrica\/Ceuta\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Conakry\u0022 \u003EAfrica\/Conakry\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Dakar\u0022 \u003EAfrica\/Dakar\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Dar_es_Salaam\u0022 \u003EAfrica\/Dar_es_Salaam\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Djibouti\u0022 \u003EAfrica\/Djibouti\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Douala\u0022 \u003EAfrica\/Douala\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/El_Aaiun\u0022 \u003EAfrica\/El_Aaiun\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Freetown\u0022 \u003EAfrica\/Freetown\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Gaborone\u0022 \u003EAfrica\/Gaborone\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Harare\u0022 \u003EAfrica\/Harare\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Johannesburg\u0022 \u003EAfrica\/Johannesburg\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Juba\u0022 \u003EAfrica\/Juba\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kampala\u0022 \u003EAfrica\/Kampala\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Khartoum\u0022 \u003EAfrica\/Khartoum\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kigali\u0022 \u003EAfrica\/Kigali\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Kinshasa\u0022 \u003EAfrica\/Kinshasa\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lagos\u0022 \u003EAfrica\/Lagos\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Libreville\u0022 \u003EAfrica\/Libreville\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lome\u0022 \u003EAfrica\/Lome\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Luanda\u0022 \u003EAfrica\/Luanda\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lubumbashi\u0022 \u003EAfrica\/Lubumbashi\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Lusaka\u0022 \u003EAfrica\/Lusaka\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Malabo\u0022 \u003EAfrica\/Malabo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Maputo\u0022 \u003EAfrica\/Maputo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Maseru\u0022 \u003EAfrica\/Maseru\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Mbabane\u0022 \u003EAfrica\/Mbabane\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Mogadishu\u0022 \u003EAfrica\/Mogadishu\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Monrovia\u0022 \u003EAfrica\/Monrovia\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Nairobi\u0022 \u003EAfrica\/Nairobi\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ndjamena\u0022 \u003EAfrica\/Ndjamena\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Niamey\u0022 \u003EAfrica\/Niamey\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Nouakchott\u0022 \u003EAfrica\/Nouakchott\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Ouagadougou\u0022 \u003EAfrica\/Ouagadougou\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Porto-Novo\u0022 \u003EAfrica\/Porto-Novo\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Sao_Tome\u0022 \u003EAfrica\/Sao_Tome\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Tripoli\u0022 \u003EAfrica\/Tripoli\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Tunis\u0022 \u003EAfrica\/Tunis\u003C\/option\u003E\n            \u003Coption value=\u0022Africa\/Windhoek\u0022 \u003EAfrica\/Windhoek\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Adak\u0022 \u003EAmerica\/Adak\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Anchorage\u0022 \u003EAmerica\/Anchorage\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Anguilla\u0022 \u003EAmerica\/Anguilla\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Antigua\u0022 \u003EAmerica\/Antigua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Araguaina\u0022 \u003EAmerica\/Araguaina\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Buenos_Aires\u0022 \u003EAmerica\/Argentina\/Buenos_Aires\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Catamarca\u0022 \u003EAmerica\/Argentina\/Catamarca\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Cordoba\u0022 \u003EAmerica\/Argentina\/Cordoba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Jujuy\u0022 \u003EAmerica\/Argentina\/Jujuy\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/La_Rioja\u0022 \u003EAmerica\/Argentina\/La_Rioja\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Mendoza\u0022 \u003EAmerica\/Argentina\/Mendoza\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Rio_Gallegos\u0022 \u003EAmerica\/Argentina\/Rio_Gallegos\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Salta\u0022 \u003EAmerica\/Argentina\/Salta\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/San_Juan\u0022 \u003EAmerica\/Argentina\/San_Juan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/San_Luis\u0022 \u003EAmerica\/Argentina\/San_Luis\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Tucuman\u0022 \u003EAmerica\/Argentina\/Tucuman\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Argentina\/Ushuaia\u0022 \u003EAmerica\/Argentina\/Ushuaia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Aruba\u0022 \u003EAmerica\/Aruba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Asuncion\u0022 \u003EAmerica\/Asuncion\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Atikokan\u0022 \u003EAmerica\/Atikokan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bahia\u0022 \u003EAmerica\/Bahia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bahia_Banderas\u0022 \u003EAmerica\/Bahia_Banderas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Barbados\u0022 \u003EAmerica\/Barbados\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Belem\u0022 \u003EAmerica\/Belem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Belize\u0022 \u003EAmerica\/Belize\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Blanc-Sablon\u0022 \u003EAmerica\/Blanc-Sablon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Boa_Vista\u0022 \u003EAmerica\/Boa_Vista\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Bogota\u0022 \u003EAmerica\/Bogota\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Boise\u0022 \u003EAmerica\/Boise\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cambridge_Bay\u0022 \u003EAmerica\/Cambridge_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Campo_Grande\u0022 \u003EAmerica\/Campo_Grande\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cancun\u0022 \u003EAmerica\/Cancun\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Caracas\u0022 \u003EAmerica\/Caracas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cayenne\u0022 \u003EAmerica\/Cayenne\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cayman\u0022 \u003EAmerica\/Cayman\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Chicago\u0022 \u003EAmerica\/Chicago\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Chihuahua\u0022 \u003EAmerica\/Chihuahua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Costa_Rica\u0022 \u003EAmerica\/Costa_Rica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Creston\u0022 \u003EAmerica\/Creston\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Cuiaba\u0022 \u003EAmerica\/Cuiaba\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Curacao\u0022 \u003EAmerica\/Curacao\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Danmarkshavn\u0022 \u003EAmerica\/Danmarkshavn\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dawson\u0022 \u003EAmerica\/Dawson\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dawson_Creek\u0022 \u003EAmerica\/Dawson_Creek\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Denver\u0022 \u003EAmerica\/Denver\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Detroit\u0022 \u003EAmerica\/Detroit\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Dominica\u0022 \u003EAmerica\/Dominica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Edmonton\u0022 \u003EAmerica\/Edmonton\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Eirunepe\u0022 \u003EAmerica\/Eirunepe\u003C\/option\u003E\n            \u003Coption value=\u0022America\/El_Salvador\u0022 \u003EAmerica\/El_Salvador\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Fort_Nelson\u0022 \u003EAmerica\/Fort_Nelson\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Fortaleza\u0022 \u003EAmerica\/Fortaleza\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Glace_Bay\u0022 \u003EAmerica\/Glace_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Godthab\u0022 \u003EAmerica\/Godthab\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Goose_Bay\u0022 \u003EAmerica\/Goose_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Grand_Turk\u0022 \u003EAmerica\/Grand_Turk\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Grenada\u0022 \u003EAmerica\/Grenada\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guadeloupe\u0022 \u003EAmerica\/Guadeloupe\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guatemala\u0022 \u003EAmerica\/Guatemala\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guayaquil\u0022 \u003EAmerica\/Guayaquil\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Guyana\u0022 \u003EAmerica\/Guyana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Halifax\u0022 \u003EAmerica\/Halifax\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Havana\u0022 \u003EAmerica\/Havana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Hermosillo\u0022 \u003EAmerica\/Hermosillo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Indianapolis\u0022 \u003EAmerica\/Indiana\/Indianapolis\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Knox\u0022 \u003EAmerica\/Indiana\/Knox\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Marengo\u0022 \u003EAmerica\/Indiana\/Marengo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Petersburg\u0022 \u003EAmerica\/Indiana\/Petersburg\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Tell_City\u0022 \u003EAmerica\/Indiana\/Tell_City\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Vevay\u0022 \u003EAmerica\/Indiana\/Vevay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Vincennes\u0022 \u003EAmerica\/Indiana\/Vincennes\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Indiana\/Winamac\u0022 \u003EAmerica\/Indiana\/Winamac\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Inuvik\u0022 \u003EAmerica\/Inuvik\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Iqaluit\u0022 \u003EAmerica\/Iqaluit\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Jamaica\u0022 \u003EAmerica\/Jamaica\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Juneau\u0022 \u003EAmerica\/Juneau\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kentucky\/Louisville\u0022 \u003EAmerica\/Kentucky\/Louisville\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kentucky\/Monticello\u0022 \u003EAmerica\/Kentucky\/Monticello\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Kralendijk\u0022 \u003EAmerica\/Kralendijk\u003C\/option\u003E\n            \u003Coption value=\u0022America\/La_Paz\u0022 \u003EAmerica\/La_Paz\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Lima\u0022 \u003EAmerica\/Lima\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Los_Angeles\u0022 \u003EAmerica\/Los_Angeles\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Lower_Princes\u0022 \u003EAmerica\/Lower_Princes\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Maceio\u0022 \u003EAmerica\/Maceio\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Managua\u0022 \u003EAmerica\/Managua\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Manaus\u0022 \u003EAmerica\/Manaus\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Marigot\u0022 \u003EAmerica\/Marigot\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Martinique\u0022 \u003EAmerica\/Martinique\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Matamoros\u0022 \u003EAmerica\/Matamoros\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Mazatlan\u0022 \u003EAmerica\/Mazatlan\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Menominee\u0022 \u003EAmerica\/Menominee\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Merida\u0022 \u003EAmerica\/Merida\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Metlakatla\u0022 \u003EAmerica\/Metlakatla\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Mexico_City\u0022 \u003EAmerica\/Mexico_City\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Miquelon\u0022 \u003EAmerica\/Miquelon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Moncton\u0022 \u003EAmerica\/Moncton\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Monterrey\u0022 \u003EAmerica\/Monterrey\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Montevideo\u0022 \u003EAmerica\/Montevideo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Montserrat\u0022 \u003EAmerica\/Montserrat\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nassau\u0022 \u003EAmerica\/Nassau\u003C\/option\u003E\n            \u003Coption value=\u0022America\/New_York\u0022 \u003EAmerica\/New_York\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nipigon\u0022 \u003EAmerica\/Nipigon\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Nome\u0022 \u003EAmerica\/Nome\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Noronha\u0022 \u003EAmerica\/Noronha\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/Beulah\u0022 \u003EAmerica\/North_Dakota\/Beulah\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/Center\u0022 \u003EAmerica\/North_Dakota\/Center\u003C\/option\u003E\n            \u003Coption value=\u0022America\/North_Dakota\/New_Salem\u0022 \u003EAmerica\/North_Dakota\/New_Salem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Ojinaga\u0022 \u003EAmerica\/Ojinaga\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Panama\u0022 \u003EAmerica\/Panama\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Pangnirtung\u0022 \u003EAmerica\/Pangnirtung\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Paramaribo\u0022 \u003EAmerica\/Paramaribo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Phoenix\u0022 \u003EAmerica\/Phoenix\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Port-au-Prince\u0022 \u003EAmerica\/Port-au-Prince\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Port_of_Spain\u0022 \u003EAmerica\/Port_of_Spain\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Porto_Velho\u0022 \u003EAmerica\/Porto_Velho\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Puerto_Rico\u0022 \u003EAmerica\/Puerto_Rico\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Punta_Arenas\u0022 \u003EAmerica\/Punta_Arenas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rainy_River\u0022 \u003EAmerica\/Rainy_River\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rankin_Inlet\u0022 \u003EAmerica\/Rankin_Inlet\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Recife\u0022 \u003EAmerica\/Recife\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Regina\u0022 \u003EAmerica\/Regina\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Resolute\u0022 \u003EAmerica\/Resolute\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Rio_Branco\u0022 \u003EAmerica\/Rio_Branco\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santarem\u0022 \u003EAmerica\/Santarem\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santiago\u0022 \u003EAmerica\/Santiago\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Santo_Domingo\u0022 \u003EAmerica\/Santo_Domingo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Sao_Paulo\u0022 \u003EAmerica\/Sao_Paulo\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Scoresbysund\u0022 \u003EAmerica\/Scoresbysund\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Sitka\u0022 \u003EAmerica\/Sitka\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Barthelemy\u0022 \u003EAmerica\/St_Barthelemy\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Johns\u0022 \u003EAmerica\/St_Johns\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Kitts\u0022 \u003EAmerica\/St_Kitts\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Lucia\u0022 \u003EAmerica\/St_Lucia\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Thomas\u0022 \u003EAmerica\/St_Thomas\u003C\/option\u003E\n            \u003Coption value=\u0022America\/St_Vincent\u0022 \u003EAmerica\/St_Vincent\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Swift_Current\u0022 \u003EAmerica\/Swift_Current\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tegucigalpa\u0022 \u003EAmerica\/Tegucigalpa\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Thule\u0022 \u003EAmerica\/Thule\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Thunder_Bay\u0022 \u003EAmerica\/Thunder_Bay\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tijuana\u0022 \u003EAmerica\/Tijuana\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Toronto\u0022 \u003EAmerica\/Toronto\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Tortola\u0022 \u003EAmerica\/Tortola\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Vancouver\u0022 \u003EAmerica\/Vancouver\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Whitehorse\u0022 \u003EAmerica\/Whitehorse\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Winnipeg\u0022 \u003EAmerica\/Winnipeg\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Yakutat\u0022 \u003EAmerica\/Yakutat\u003C\/option\u003E\n            \u003Coption value=\u0022America\/Yellowknife\u0022 \u003EAmerica\/Yellowknife\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Casey\u0022 \u003EAntarctica\/Casey\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Davis\u0022 \u003EAntarctica\/Davis\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/DumontDUrville\u0022 \u003EAntarctica\/DumontDUrville\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Macquarie\u0022 \u003EAntarctica\/Macquarie\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Mawson\u0022 \u003EAntarctica\/Mawson\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/McMurdo\u0022 \u003EAntarctica\/McMurdo\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Palmer\u0022 \u003EAntarctica\/Palmer\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Rothera\u0022 \u003EAntarctica\/Rothera\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Syowa\u0022 \u003EAntarctica\/Syowa\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Troll\u0022 \u003EAntarctica\/Troll\u003C\/option\u003E\n            \u003Coption value=\u0022Antarctica\/Vostok\u0022 \u003EAntarctica\/Vostok\u003C\/option\u003E\n            \u003Coption value=\u0022Arctic\/Longyearbyen\u0022 \u003EArctic\/Longyearbyen\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aden\u0022 \u003EAsia\/Aden\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Almaty\u0022 \u003EAsia\/Almaty\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Amman\u0022 \u003EAsia\/Amman\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Anadyr\u0022 \u003EAsia\/Anadyr\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aqtau\u0022 \u003EAsia\/Aqtau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Aqtobe\u0022 \u003EAsia\/Aqtobe\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ashgabat\u0022 \u003EAsia\/Ashgabat\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Atyrau\u0022 \u003EAsia\/Atyrau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Baghdad\u0022 \u003EAsia\/Baghdad\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bahrain\u0022 \u003EAsia\/Bahrain\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Baku\u0022 \u003EAsia\/Baku\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bangkok\u0022 \u003EAsia\/Bangkok\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Barnaul\u0022 \u003EAsia\/Barnaul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Beirut\u0022 \u003EAsia\/Beirut\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Bishkek\u0022 \u003EAsia\/Bishkek\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Brunei\u0022 \u003EAsia\/Brunei\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Chita\u0022 \u003EAsia\/Chita\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Choibalsan\u0022 \u003EAsia\/Choibalsan\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Colombo\u0022 \u003EAsia\/Colombo\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Damascus\u0022 \u003EAsia\/Damascus\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dhaka\u0022 \u003EAsia\/Dhaka\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dili\u0022 \u003EAsia\/Dili\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dubai\u0022 \u003EAsia\/Dubai\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Dushanbe\u0022 \u003EAsia\/Dushanbe\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Famagusta\u0022 \u003EAsia\/Famagusta\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Gaza\u0022 \u003EAsia\/Gaza\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hebron\u0022 \u003EAsia\/Hebron\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ho_Chi_Minh\u0022 \u003EAsia\/Ho_Chi_Minh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hong_Kong\u0022 \u003EAsia\/Hong_Kong\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Hovd\u0022 \u003EAsia\/Hovd\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Irkutsk\u0022 \u003EAsia\/Irkutsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jakarta\u0022 \u003EAsia\/Jakarta\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jayapura\u0022 \u003EAsia\/Jayapura\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Jerusalem\u0022 \u003EAsia\/Jerusalem\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kabul\u0022 \u003EAsia\/Kabul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kamchatka\u0022 \u003EAsia\/Kamchatka\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Karachi\u0022 \u003EAsia\/Karachi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kathmandu\u0022 \u003EAsia\/Kathmandu\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Khandyga\u0022 \u003EAsia\/Khandyga\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kolkata\u0022 \u003EAsia\/Kolkata\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Krasnoyarsk\u0022 \u003EAsia\/Krasnoyarsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuala_Lumpur\u0022 \u003EAsia\/Kuala_Lumpur\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuching\u0022 \u003EAsia\/Kuching\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Kuwait\u0022 \u003EAsia\/Kuwait\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Macau\u0022 \u003EAsia\/Macau\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Magadan\u0022 \u003EAsia\/Magadan\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Makassar\u0022 \u003EAsia\/Makassar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Manila\u0022 \u003EAsia\/Manila\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Muscat\u0022 \u003EAsia\/Muscat\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Nicosia\u0022 \u003EAsia\/Nicosia\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Novokuznetsk\u0022 \u003EAsia\/Novokuznetsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Novosibirsk\u0022 \u003EAsia\/Novosibirsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Omsk\u0022 \u003EAsia\/Omsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Oral\u0022 \u003EAsia\/Oral\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Phnom_Penh\u0022 \u003EAsia\/Phnom_Penh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Pontianak\u0022 \u003EAsia\/Pontianak\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Pyongyang\u0022 \u003EAsia\/Pyongyang\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Qatar\u0022 \u003EAsia\/Qatar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Qyzylorda\u0022 \u003EAsia\/Qyzylorda\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Riyadh\u0022 \u003EAsia\/Riyadh\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Sakhalin\u0022 \u003EAsia\/Sakhalin\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Samarkand\u0022 \u003EAsia\/Samarkand\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Seoul\u0022 \u003EAsia\/Seoul\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Shanghai\u0022 \u003EAsia\/Shanghai\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Singapore\u0022 \u003EAsia\/Singapore\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Srednekolymsk\u0022 \u003EAsia\/Srednekolymsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Taipei\u0022 \u003EAsia\/Taipei\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tashkent\u0022 \u003EAsia\/Tashkent\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tbilisi\u0022 \u003EAsia\/Tbilisi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tehran\u0022 \u003EAsia\/Tehran\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Thimphu\u0022 \u003EAsia\/Thimphu\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tokyo\u0022 \u003EAsia\/Tokyo\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Tomsk\u0022 \u003EAsia\/Tomsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ulaanbaatar\u0022 \u003EAsia\/Ulaanbaatar\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Urumqi\u0022 \u003EAsia\/Urumqi\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Ust-Nera\u0022 \u003EAsia\/Ust-Nera\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Vientiane\u0022 \u003EAsia\/Vientiane\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Vladivostok\u0022 \u003EAsia\/Vladivostok\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yakutsk\u0022 \u003EAsia\/Yakutsk\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yangon\u0022 \u003EAsia\/Yangon\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yekaterinburg\u0022 \u003EAsia\/Yekaterinburg\u003C\/option\u003E\n            \u003Coption value=\u0022Asia\/Yerevan\u0022 \u003EAsia\/Yerevan\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Azores\u0022 \u003EAtlantic\/Azores\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Bermuda\u0022 \u003EAtlantic\/Bermuda\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Canary\u0022 \u003EAtlantic\/Canary\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Cape_Verde\u0022 \u003EAtlantic\/Cape_Verde\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Faroe\u0022 \u003EAtlantic\/Faroe\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Madeira\u0022 \u003EAtlantic\/Madeira\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Reykjavik\u0022 \u003EAtlantic\/Reykjavik\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/South_Georgia\u0022 \u003EAtlantic\/South_Georgia\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/St_Helena\u0022 \u003EAtlantic\/St_Helena\u003C\/option\u003E\n            \u003Coption value=\u0022Atlantic\/Stanley\u0022 \u003EAtlantic\/Stanley\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Adelaide\u0022 \u003EAustralia\/Adelaide\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Brisbane\u0022 \u003EAustralia\/Brisbane\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Broken_Hill\u0022 \u003EAustralia\/Broken_Hill\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Currie\u0022 \u003EAustralia\/Currie\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Darwin\u0022 \u003EAustralia\/Darwin\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Eucla\u0022 \u003EAustralia\/Eucla\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Hobart\u0022 \u003EAustralia\/Hobart\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Lindeman\u0022 \u003EAustralia\/Lindeman\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Lord_Howe\u0022 \u003EAustralia\/Lord_Howe\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Melbourne\u0022 \u003EAustralia\/Melbourne\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Perth\u0022 \u003EAustralia\/Perth\u003C\/option\u003E\n            \u003Coption value=\u0022Australia\/Sydney\u0022 \u003EAustralia\/Sydney\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Amsterdam\u0022 \u003EEurope\/Amsterdam\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Andorra\u0022 \u003EEurope\/Andorra\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Astrakhan\u0022 \u003EEurope\/Astrakhan\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Athens\u0022 \u003EEurope\/Athens\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Belgrade\u0022 \u003EEurope\/Belgrade\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Berlin\u0022 \u003EEurope\/Berlin\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Bratislava\u0022 \u003EEurope\/Bratislava\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Brussels\u0022 \u003EEurope\/Brussels\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Bucharest\u0022 \u003EEurope\/Bucharest\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Budapest\u0022 \u003EEurope\/Budapest\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Busingen\u0022 \u003EEurope\/Busingen\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Chisinau\u0022 \u003EEurope\/Chisinau\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Copenhagen\u0022 \u003EEurope\/Copenhagen\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Dublin\u0022 \u003EEurope\/Dublin\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Gibraltar\u0022 \u003EEurope\/Gibraltar\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Guernsey\u0022 \u003EEurope\/Guernsey\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Helsinki\u0022 \u003EEurope\/Helsinki\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Isle_of_Man\u0022 \u003EEurope\/Isle_of_Man\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Istanbul\u0022 \u003EEurope\/Istanbul\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Jersey\u0022 \u003EEurope\/Jersey\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kaliningrad\u0022 \u003EEurope\/Kaliningrad\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kiev\u0022 \u003EEurope\/Kiev\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Kirov\u0022 \u003EEurope\/Kirov\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Lisbon\u0022 \u003EEurope\/Lisbon\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Ljubljana\u0022 \u003EEurope\/Ljubljana\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/London\u0022 \u003EEurope\/London\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Luxembourg\u0022 \u003EEurope\/Luxembourg\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Madrid\u0022 \u003EEurope\/Madrid\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Malta\u0022 \u003EEurope\/Malta\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Mariehamn\u0022 \u003EEurope\/Mariehamn\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Minsk\u0022 \u003EEurope\/Minsk\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Monaco\u0022 \u003EEurope\/Monaco\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Moscow\u0022 \u003EEurope\/Moscow\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Oslo\u0022 \u003EEurope\/Oslo\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Paris\u0022 \u003EEurope\/Paris\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Podgorica\u0022 \u003EEurope\/Podgorica\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Prague\u0022 \u003EEurope\/Prague\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Riga\u0022 \u003EEurope\/Riga\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Rome\u0022 \u003EEurope\/Rome\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Samara\u0022 \u003EEurope\/Samara\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/San_Marino\u0022 \u003EEurope\/San_Marino\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Sarajevo\u0022 \u003EEurope\/Sarajevo\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Saratov\u0022 \u003EEurope\/Saratov\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Simferopol\u0022 \u003EEurope\/Simferopol\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Skopje\u0022 \u003EEurope\/Skopje\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Sofia\u0022 \u003EEurope\/Sofia\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Stockholm\u0022 \u003EEurope\/Stockholm\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Tallinn\u0022 \u003EEurope\/Tallinn\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Tirane\u0022 \u003EEurope\/Tirane\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Ulyanovsk\u0022 \u003EEurope\/Ulyanovsk\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Uzhgorod\u0022 \u003EEurope\/Uzhgorod\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vaduz\u0022 \u003EEurope\/Vaduz\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vatican\u0022 \u003EEurope\/Vatican\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vienna\u0022 \u003EEurope\/Vienna\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Vilnius\u0022 \u003EEurope\/Vilnius\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Volgograd\u0022 \u003EEurope\/Volgograd\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Warsaw\u0022 \u003EEurope\/Warsaw\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zagreb\u0022 \u003EEurope\/Zagreb\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zaporozhye\u0022 \u003EEurope\/Zaporozhye\u003C\/option\u003E\n            \u003Coption value=\u0022Europe\/Zurich\u0022 \u003EEurope\/Zurich\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Antananarivo\u0022 \u003EIndian\/Antananarivo\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Chagos\u0022 \u003EIndian\/Chagos\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Christmas\u0022 \u003EIndian\/Christmas\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Cocos\u0022 \u003EIndian\/Cocos\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Comoro\u0022 \u003EIndian\/Comoro\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Kerguelen\u0022 \u003EIndian\/Kerguelen\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mahe\u0022 \u003EIndian\/Mahe\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Maldives\u0022 \u003EIndian\/Maldives\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mauritius\u0022 \u003EIndian\/Mauritius\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Mayotte\u0022 \u003EIndian\/Mayotte\u003C\/option\u003E\n            \u003Coption value=\u0022Indian\/Reunion\u0022 \u003EIndian\/Reunion\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Apia\u0022 \u003EPacific\/Apia\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Auckland\u0022 \u003EPacific\/Auckland\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Bougainville\u0022 \u003EPacific\/Bougainville\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Chatham\u0022 \u003EPacific\/Chatham\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Chuuk\u0022 \u003EPacific\/Chuuk\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Easter\u0022 \u003EPacific\/Easter\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Efate\u0022 \u003EPacific\/Efate\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Enderbury\u0022 \u003EPacific\/Enderbury\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Fakaofo\u0022 \u003EPacific\/Fakaofo\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Fiji\u0022 \u003EPacific\/Fiji\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Funafuti\u0022 \u003EPacific\/Funafuti\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Galapagos\u0022 \u003EPacific\/Galapagos\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Gambier\u0022 \u003EPacific\/Gambier\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Guadalcanal\u0022 \u003EPacific\/Guadalcanal\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Guam\u0022 \u003EPacific\/Guam\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Honolulu\u0022 \u003EPacific\/Honolulu\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kiritimati\u0022 \u003EPacific\/Kiritimati\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kosrae\u0022 \u003EPacific\/Kosrae\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Kwajalein\u0022 \u003EPacific\/Kwajalein\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Majuro\u0022 \u003EPacific\/Majuro\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Marquesas\u0022 \u003EPacific\/Marquesas\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Midway\u0022 \u003EPacific\/Midway\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Nauru\u0022 \u003EPacific\/Nauru\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Niue\u0022 \u003EPacific\/Niue\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Norfolk\u0022 \u003EPacific\/Norfolk\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Noumea\u0022 \u003EPacific\/Noumea\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pago_Pago\u0022 \u003EPacific\/Pago_Pago\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Palau\u0022 \u003EPacific\/Palau\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pitcairn\u0022 \u003EPacific\/Pitcairn\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Pohnpei\u0022 \u003EPacific\/Pohnpei\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Port_Moresby\u0022 \u003EPacific\/Port_Moresby\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Rarotonga\u0022 \u003EPacific\/Rarotonga\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Saipan\u0022 \u003EPacific\/Saipan\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tahiti\u0022 \u003EPacific\/Tahiti\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tarawa\u0022 \u003EPacific\/Tarawa\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Tongatapu\u0022 \u003EPacific\/Tongatapu\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Wake\u0022 \u003EPacific\/Wake\u003C\/option\u003E\n            \u003Coption value=\u0022Pacific\/Wallis\u0022 \u003EPacific\/Wallis\u003C\/option\u003E\n            \u003Coption value=\u0022UTC\u0022 selected\u003EUTC\u003C\/option\u003E\n        \u003C\/select\u003E\n    \u003C\/p\u003E\n\u003C\/div\u003E\n\u003Cscript src=\u0022https:\/\/avris.it\/file\/askara-clock.js\u0022\u003E\u003C\/script\u003E","words":1535,"readTime":7,"lang":"en"}}},"blog\/technology\/php-aspectmock-fa\u0142szowanie-czasu":{"key":"blog\/technology\/php-aspectmock-fa\u0142szowanie-czasu","type":"article","published":true,"meta":{"createdAt":"2017-04-28T19:43:40+02:00","publishedAt":"2015-07-30T09:25:00+02:00","group":"mocks","category":"blog","subcategory":"technology","slug":"php-aspectmock-fa\u0142szowanie-czasu"},"content":{"pl":{"slug":"php-aspectmock-fa\u0142szowanie-czasu","title":"PHP + AspectMock \u2013 fa\u0142szowanie czasu","intro":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_small.jpeg\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022291.32075471698\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAVCAYAAAAuJkyQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGw0lEQVRIic2Wy45kRxGGv8jMc6s6dev73DxjM5ZBBgkhIbAsC5Y8Fk\/FIyB5hWBjyx7beKZ7erqnq7su534yM1jUvAEsiH1Iv\/6IL+IXQPk\/KpdYhw8B6yxpkoIaxAgigggoiqCAIAhRQFAEi2oEFBEBBFRRAYNBAdWICIhw6I9KFEUVRAVEMSKItUBk7AfcMit46GqmecGTk1PmQ0s+LYkacRjqcaCdLCiGlqWziEQqD8NyhSiY4Jk93DJdHBFiZO0D9vgEo5HolWJzyzQriAG8RqqjY+Lde05dggI7Y8kfP0Fix7t3VxgVxYghhkAzdFR1D80D435D4XcsGQm+x8fIi2RPX+\/5OB+IwdNcX7HYvOU477mQW1z9Dt3f86vqFXr7lt9+MufYRZ4Pa769fM1YrVH1ZGPNWb\/mm+tL0maLH0ZMkpO6FBNi\/GA5VPua0FV8VozMQ8unhefXZU1dNZxKx1hV3N7cs3u4x6iFpmbJHtO2vLmtOEkDj01Dv69p+5Hb6x3PJLLZN4xtw4WJ\/PH357y0I5t9zVBVPE4CUSO+6xmHHhdVESBxjtw5vriYsvOe81nCq03HdlTIhWlmuX6IDEa48w4xiiQTsqzldSV8tjJc14AVHqKlSwpe3+84SzLSPCedwJtguP9uwy\/yCW82I8VkypvR4tWTmuSwv6vJRLvRk2U5F48e4axBfEASizEOjMEmDosBDP1Qs1yt6AcljCNp7jCA9540z7m+umK1XJDnU7bbLcdHpwxjTz4piRpw1jKOAY0BMYIVgyikNnJ78xaHQlQlSRLKyQxrDRoi1hqisQe+RLBWIEb8mLDdVgjgQ2AYhBgVJ4a2HZjkE8ZupGs3RInsdvcA9H2LNe4DtYKooubAb55kJKmiUXHNOOJjZDad4TcbynKCOksaA2Fo6b0SFwuy+zVZWTALPY1N0OmcqIprKqZJxCUZMQw0OGK5OIjfPXDhBygmhBCpdxvqxYqyqpjM5kQ\/sI2R8uiEodkTQ8T1PmCNIfiRne+RuUcHh7UGEWj7nqxP6GdKOvfstx3GwbQI7Ko92teEJynN\/XvKk4LdemCyLJhdNyyKhHc09GZPt+7J84zMGKpTofJb7NyiQ46xjnGsUVEMH0YSYqT8\/BQ+WTD9wznfXF4xPM354fYGgNukpn7pyf5SULuartnz49Ur+s8j3RcZ4U85w5cp7qucG3dJPLKk5wuql8L9ccv32xv0dzmzTwte2wdujmt+Mvf4J2AQQlQUcxB0OKVKsUhYnc7IEotzDrrA0IxYk\/D4y1Pe\/P2G\/Cjl7IsLJEmRRIj7yI9\/uyK1GU7h56\/fcvJ8zsPlhvXllunJBHFgjUHriI97zn9zxObnisWzKXf\/3KAaiUER6xAwmmcZZ6slRVkimSWOHqMOYywalfl8Sqc9BMUbJfSRIsloupYQI6IQ8WSzCbGPiI1M3JxyWhAN+MET\/EjiUlQVSQwaI9EoGSllOePh5g1N3+MAVqsj8mLKJC+x1hIkYKwlzVJi9ABMzBRjDf04MNpAnhWsFitCGBmD8nC\/RrrI0WIOCE1VY01BIgl5liKFQQU0xIMTqhhr8MEz9iNt1SAWHChN23C0WCJDj6KkenilcaiILgURDBCx5NbgsgSItF2Ljh2zEJlmOYjSGUeMkVlZ0lUV0yFgrCAmoZGIphlpWyNiiAJ+MmO5PCaqYjEHh4a+xYllpiPLskAx6BjwfUc1yRmCZ1ZvyPOSpm7ZTpdY4iG39CPWGoyFEDx+6BFVpgjqPVaVEAURf3BFDLYfsVlO7Fp8NiFGTzGdMA7jYamjKtv9hlm553hV8dGLgX+8\/YmPXni+\/enfoJ7584ifPvD97SVdu2f38J7u9hVPTmqePW9xxR2nZxXzeEm4\/5mnzyZIblm92CPFmm9ff8fzT0rKGYT0jsnqjkef9jx9DF3X0PUdyAfKVBVVpakDPgpf\/2vNzX3LD+8GRt\/x+NwRhxFrAn\/+6hwjhjJLWC5S3r7Z4YwwSS3TSUpbR375csn9ZUseYHM3EBQmuaPdbDjNe55eZITR8\/66ZbuNDEPPtCwxzmJB\/mqMYbVY8nSVsO89F6uMd5UyRpBkSjEtMUZ4+74HcWyblKjKvvZU3nJ1NzIMsGsCKo51FbhqA41JeXQ+5f1aISl5aCzbGk7Olly+E86eHnNzD30\/MnQN9oA9aq3l2aMnGGuIAD5inCGqkqYpqLDbbxErnByf0LQ9282G1XJJVhSs12suzs4JYSSEQ4IMwRNipK5rFvMZziUYsYx+JE1TQvAgMPQDfhzAe4ZhOAj6H8fi\/6r+A3A83c4qjf3rAAAAAElFTkSuQmCC\u0022 data-src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_small.jpeg\u0022 alt=\u0022\u0022 class=\u0022border-bottom\u0022 width=\u0022480\u0022 height=\u0022291.32075471698\u0022\u003E\u003C\/span\u003E\n                \n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EW pewnym projekcie operuj\u0119 poprzez API na li\u015bcie wyda\u0144 produktu: zamykam wydania, kt\u00f3rych czas ju\u017c min\u0105\u0142, i tworz\u0119 nowe na osiem tygodni naprz\u00f3d. Moimi punktami odniesienia w czasie s\u0105:\u003C\/p\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","content":"\u003Cfigure\u003E\n                \u003Cnoscript\u003E\n                    \u003Cimg src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_big.jpeg\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022636\u0022 height=\u0022386\u0022\u003E                \n                \u003C\/noscript\u003E\n                \u003Cspan class=\u0022hide-noscript\u0022\u003E\u003Cimg src=\u0022data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAVCAYAAAAuJkyQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGw0lEQVRIic2Wy45kRxGGv8jMc6s6dev73DxjM5ZBBgkhIbAsC5Y8Fk\/FIyB5hWBjyx7beKZ7erqnq7su534yM1jUvAEsiH1Iv\/6IL+IXQPk\/KpdYhw8B6yxpkoIaxAgigggoiqCAIAhRQFAEi2oEFBEBBFRRAYNBAdWICIhw6I9KFEUVRAVEMSKItUBk7AfcMit46GqmecGTk1PmQ0s+LYkacRjqcaCdLCiGlqWziEQqD8NyhSiY4Jk93DJdHBFiZO0D9vgEo5HolWJzyzQriAG8RqqjY+Lde05dggI7Y8kfP0Fix7t3VxgVxYghhkAzdFR1D80D435D4XcsGQm+x8fIi2RPX+\/5OB+IwdNcX7HYvOU477mQW1z9Dt3f86vqFXr7lt9+MufYRZ4Pa769fM1YrVH1ZGPNWb\/mm+tL0maLH0ZMkpO6FBNi\/GA5VPua0FV8VozMQ8unhefXZU1dNZxKx1hV3N7cs3u4x6iFpmbJHtO2vLmtOEkDj01Dv69p+5Hb6x3PJLLZN4xtw4WJ\/PH357y0I5t9zVBVPE4CUSO+6xmHHhdVESBxjtw5vriYsvOe81nCq03HdlTIhWlmuX6IDEa48w4xiiQTsqzldSV8tjJc14AVHqKlSwpe3+84SzLSPCedwJtguP9uwy\/yCW82I8VkypvR4tWTmuSwv6vJRLvRk2U5F48e4axBfEASizEOjMEmDosBDP1Qs1yt6AcljCNp7jCA9540z7m+umK1XJDnU7bbLcdHpwxjTz4piRpw1jKOAY0BMYIVgyikNnJ78xaHQlQlSRLKyQxrDRoi1hqisQe+RLBWIEb8mLDdVgjgQ2AYhBgVJ4a2HZjkE8ZupGs3RInsdvcA9H2LNe4DtYKooubAb55kJKmiUXHNOOJjZDad4TcbynKCOksaA2Fo6b0SFwuy+zVZWTALPY1N0OmcqIprKqZJxCUZMQw0OGK5OIjfPXDhBygmhBCpdxvqxYqyqpjM5kQ\/sI2R8uiEodkTQ8T1PmCNIfiRne+RuUcHh7UGEWj7nqxP6GdKOvfstx3GwbQI7Ko92teEJynN\/XvKk4LdemCyLJhdNyyKhHc09GZPt+7J84zMGKpTofJb7NyiQ46xjnGsUVEMH0YSYqT8\/BQ+WTD9wznfXF4xPM354fYGgNukpn7pyf5SULuartnz49Ur+s8j3RcZ4U85w5cp7qucG3dJPLKk5wuql8L9ccv32xv0dzmzTwte2wdujmt+Mvf4J2AQQlQUcxB0OKVKsUhYnc7IEotzDrrA0IxYk\/D4y1Pe\/P2G\/Cjl7IsLJEmRRIj7yI9\/uyK1GU7h56\/fcvJ8zsPlhvXllunJBHFgjUHriI97zn9zxObnisWzKXf\/3KAaiUER6xAwmmcZZ6slRVkimSWOHqMOYywalfl8Sqc9BMUbJfSRIsloupYQI6IQ8WSzCbGPiI1M3JxyWhAN+MET\/EjiUlQVSQwaI9EoGSllOePh5g1N3+MAVqsj8mLKJC+x1hIkYKwlzVJi9ABMzBRjDf04MNpAnhWsFitCGBmD8nC\/RrrI0WIOCE1VY01BIgl5liKFQQU0xIMTqhhr8MEz9iNt1SAWHChN23C0WCJDj6KkenilcaiILgURDBCx5NbgsgSItF2Ljh2zEJlmOYjSGUeMkVlZ0lUV0yFgrCAmoZGIphlpWyNiiAJ+MmO5PCaqYjEHh4a+xYllpiPLskAx6BjwfUc1yRmCZ1ZvyPOSpm7ZTpdY4iG39CPWGoyFEDx+6BFVpgjqPVaVEAURf3BFDLYfsVlO7Fp8NiFGTzGdMA7jYamjKtv9hlm553hV8dGLgX+8\/YmPXni+\/enfoJ7584ifPvD97SVdu2f38J7u9hVPTmqePW9xxR2nZxXzeEm4\/5mnzyZIblm92CPFmm9ff8fzT0rKGYT0jsnqjkef9jx9DF3X0PUdyAfKVBVVpakDPgpf\/2vNzX3LD+8GRt\/x+NwRhxFrAn\/+6hwjhjJLWC5S3r7Z4YwwSS3TSUpbR375csn9ZUseYHM3EBQmuaPdbDjNe55eZITR8\/66ZbuNDEPPtCwxzmJB\/mqMYbVY8nSVsO89F6uMd5UyRpBkSjEtMUZ4+74HcWyblKjKvvZU3nJ1NzIMsGsCKo51FbhqA41JeXQ+5f1aISl5aCzbGk7Olly+E86eHnNzD30\/MnQN9oA9aq3l2aMnGGuIAD5inCGqkqYpqLDbbxErnByf0LQ9282G1XJJVhSs12suzs4JYSSEQ4IMwRNipK5rFvMZziUYsYx+JE1TQvAgMPQDfhzAe4ZhOAj6H8fi\/6r+A3A83c4qjf3rAAAAAElFTkSuQmCC\u0022 data-src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_big.jpeg\u0022 alt=\u0022\u0022 class=\u0022border\u0022 width=\u0022636\u0022 height=\u0022386\u0022\u003E\u003C\/span\u003E\n                \n            \u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EW pewnym projekcie operuj\u0119 poprzez API na li\u015bcie wyda\u0144 produktu: zamykam wydania, kt\u00f3rych czas ju\u017c min\u0105\u0142, i tworz\u0119 nowe na osiem tygodni naprz\u00f3d. Moimi punktami odniesienia w czasie s\u0105:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime\u003C\/code\u003E \u2013 dzi\u015b,\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime(\u0027+8 weeks\u0027)\u003C\/code\u003E \u2013 koniec okresu, w kt\u00f3rym tworz\u0119 wydania,\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime(\u0027last friday\u0027)\u003C\/code\u003E \u2013 bo cykl ka\u017cdego wydania ko\u0144czy si\u0119 w pi\u0105tek, od tej daty iteruj\u0119 \u003Ccode\u003E+1 week\u003C\/code\u003E tworz\u0105c nowe wydania.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EDwie sprawy komplikuj\u0105 nam \u017cycie, je\u015bli chcemy stworzy\u0107 testy jednostkowe do tej klasy: po pierwsze nie powinni\u015bmy \u003Cem\u003Enaprawd\u0119\u003C\/em\u003E odwo\u0142ywa\u0107 si\u0119 do API, a jedynie uda\u0107 zapytania, a po drugie powinni\u015bmy uda\u0107 \u017ce \u003Cem\u003Edzisiaj\u003C\/em\u003E jest kt\u00f3ry\u015btam, jaka\u015b sta\u0142a data, do kt\u00f3rej b\u0119d\u0105 dostosowane nasze przypadki testowe.\u003C\/p\u003E\n\u003Cp\u003EMusimy zatem stworzy\u0107 par\u0119 dubli \u2013 klas, kt\u00f3re \u201cprzys\u0142oni\u0105\u201d swoje pierwowzory, podmieniaj\u0105c niekt\u00f3re ich metody na swoje. \u015awietnym narz\u0119dziem do tego celu jest biblioteka \u003Ca href=\u0022https:\/\/github.com\/Codeception\/AspectMock\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Csvg class=\u0022icon\u0022\u003E\u003Cuse xlink:href=\u0022#light-link\u0022\u003E\u003C\/use\u003E\u003C\/svg\u003E AspectMock\u003C\/a\u003E, potrafi\u0105ca stworzy\u0107 takie duble, kt\u00f3re wszystkim innym nawet si\u0119 nie \u015bni\u0142y (np. duble metod statycznych czy funkcji systemowych).\u003C\/p\u003E\n\u003Cp\u003ENiestety, cho\u0107 AspectMock potrafi \u201cnadpisa\u0107\u201d funkcj\u0119 \u003Ccode\u003Etime()\u003C\/code\u003E, na nic to si\u0119 zda, je\u015bli u\u017cywamy \u003Ccode\u003EDateTime\u003C\/code\u003E (a kto nie u\u017cywa?), a j\u0105 nadpisa\u0107 jest ju\u017c ci\u0119\u017cej. Na szcz\u0119\u015bcie da si\u0119 to zrobi\u0107 za pomoc\u0105 pewnej sztuczki:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022hljs php border\u0022\u003E\u003Cspan class=\u0022hljs-meta\u0022\u003E\u0026lt;?php\u003C\/span\u003E\n\u003Cspan class=\u0022hljs-keyword\u0022\u003Enamespace\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EVR\u003C\/span\u003E\\\u003Cspan class=\u0022hljs-title\u0022\u003ERedmine\u003C\/span\u003E;\n\n\u003Cspan class=\u0022hljs-class\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Eclass\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EVersionsHandler\u003C\/span\u003E\n\u003C\/span\u003E{\n    \u003Cspan class=\u0022hljs-comment\u0022\u003E\/** \u003Cspan class=\u0022hljs-doctag\u0022\u003E@var\u003C\/span\u003E Api *\/\u003C\/span\u003E\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Eprivate\u003C\/span\u003E $api;\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Eprivate\u003C\/span\u003E $now;\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Eprivate\u003C\/span\u003E $until;\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Epublic\u003C\/span\u003E \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003E__construct\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E(Api $api)\u003C\/span\u003E\n    \u003C\/span\u003E{\n        \u003Cspan class=\u0022hljs-keyword\u0022\u003E$this\u003C\/span\u003E-\u0026gt;api = $api;\n\n        \u003Cspan class=\u0022hljs-keyword\u0022\u003E$this\u003C\/span\u003E-\u0026gt;now = TimeProvider::getDateTimeFormatted();\n\n        \u003Cspan class=\u0022hljs-keyword\u0022\u003E$this\u003C\/span\u003E-\u0026gt;until = TimeProvider::getDateTimeFormatted(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027+8 weeks\u0027\u003C\/span\u003E);\n    }\n\n    \u003Cspan class=\u0022hljs-comment\u0022\u003E\/\/ (...)\u003C\/span\u003E\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Eprivate\u003C\/span\u003E \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EgetToBeCreated\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E()\u003C\/span\u003E\n    \u003C\/span\u003E{\n        $current = TimeProvider::getDateTime(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027last friday\u0027\u003C\/span\u003E);\n        \u003Cspan class=\u0022hljs-comment\u0022\u003E\/\/ (...)\u003C\/span\u003E\n    }\n\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EJak wida\u0107, we wszystkich miejscach, gdzie normalnie u\u017cy\u0142bym \u003Ccode\u003EDateTime\u003C\/code\u003E, ja korzystam z klasy \u003Ccode\u003ETimeProvider\u003C\/code\u003E. Jest ona bardzo pro\u015bciutka:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022hljs php border\u0022\u003E\u003Cspan class=\u0022hljs-meta\u0022\u003E\u0026lt;?php\u003C\/span\u003E\n\u003Cspan class=\u0022hljs-keyword\u0022\u003Enamespace\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EVR\u003C\/span\u003E\\\u003Cspan class=\u0022hljs-title\u0022\u003ERedmine\u003C\/span\u003E;\n\n\u003Cspan class=\u0022hljs-class\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Eclass\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003ETimeProvider\u003C\/span\u003E\n\u003C\/span\u003E{\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Epublic\u003C\/span\u003E \u003Cspan class=\u0022hljs-keyword\u0022\u003Estatic\u003C\/span\u003E \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EgetDateTime\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E($time = \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027now\u0027\u003C\/span\u003E)\u003C\/span\u003E\n    \u003C\/span\u003E{\n        \u003Cspan class=\u0022hljs-keyword\u0022\u003Ereturn\u003C\/span\u003E \u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E \\DateTime($time);\n    }\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Epublic\u003C\/span\u003E \u003Cspan class=\u0022hljs-keyword\u0022\u003Estatic\u003C\/span\u003E \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E \u003Cspan class=\u0022hljs-title\u0022\u003EgetDateTimeFormatted\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E($time = \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027now\u0027\u003C\/span\u003E)\u003C\/span\u003E\n    \u003C\/span\u003E{\n        $datetime = \u003Cspan class=\u0022hljs-keyword\u0022\u003Eself\u003C\/span\u003E::getDateTime($time);\n\n        \u003Cspan class=\u0022hljs-keyword\u0022\u003Ereturn\u003C\/span\u003E $datetime-\u0026gt;format(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027Y.\\WW\u0027\u003C\/span\u003E);\n    }\n}\n\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EI istnieje tylko po to, by m\u00f3c j\u0105 zdublowa\u0107 w nast\u0119puj\u0105cy spos\u00f3b:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022hljs php border\u0022\u003E$timeProxy = Test::double(\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027VR\\\\Redmine\\\\TimeProvider\u0027\u003C\/span\u003E, [\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027getDateTime\u0027\u003C\/span\u003E =\u0026gt; \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E($time)\u003C\/span\u003E \u003C\/span\u003E{\n    $dt = \u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E \\DateTime(\u003Cspan class=\u0022hljs-string\u0022\u003E\u00272015-01-14\u0027\u003C\/span\u003E);\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Ereturn\u003C\/span\u003E $dt-\u0026gt;modify($time);\n}]);\n\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EA zatem podczas normalnego uruchomienia aplikacji, \u003Ccode\u003ETimeProvider\u003C\/code\u003E dzia\u0142a po prostu jak nicnierobi\u0105ca fabryka \u003Ccode\u003EDateTime\u003C\/code\u003E\u2019\u00f3w. W czasie test\u00f3w jednak obiera ona za punkt odniesienia arbitraln\u0105 dat\u0119 \u003Ccode\u003E2015-01-04\u003C\/code\u003E, a potem modyfikuje j\u0105 o to, co podamy jej w parametrze, jak jakby dzi\u015b by\u0142 \u003Ccode\u003E2015-01-04\u003C\/code\u003E. Zawsze, niezale\u017cnie kiedy uruchomimy test.\u003C\/p\u003E\n\u003Cp\u003ETeraz wystarczy tylko zdublowa\u0107 funkcj\u0119 odwo\u0142uj\u0105c\u0105 si\u0119 do API i przeprowadzi\u0107 testy:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode class=\u0022hljs php border\u0022\u003E$apiProxy = Test::double(\n  \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027VR\\\\Redmine\\\\Api\u0027\u003C\/span\u003E,\n  [\u003Cspan class=\u0022hljs-string\u0022\u003E\u0027curl\u0027\u003C\/span\u003E =\u0026gt; \u003Cspan class=\u0022hljs-function\u0022\u003E\u003Cspan class=\u0022hljs-keyword\u0022\u003Efunction\u003C\/span\u003E\u003Cspan class=\u0022hljs-params\u0022\u003E($url, $method = \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027GET\u0027\u003C\/span\u003E, $data = [])\u003C\/span\u003E \u003C\/span\u003E{\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Eif\u003C\/span\u003E ($method != \u003Cspan class=\u0022hljs-string\u0022\u003E\u0027GET\u0027\u003C\/span\u003E) { \u003Cspan class=\u0022hljs-keyword\u0022\u003Ereturn\u003C\/span\u003E \u003Cspan class=\u0022hljs-keyword\u0022\u003Enull\u003C\/span\u003E; }\n\n    \u003Cspan class=\u0022hljs-keyword\u0022\u003Ereturn\u003C\/span\u003E json_encode(\u003Cspan class=\u0022hljs-comment\u0022\u003E\/* mocked api response *\/\u003C\/span\u003E);\n}]);\n\n$handler = \u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E VersionsHandler(\u003Cspan class=\u0022hljs-keyword\u0022\u003Enew\u003C\/span\u003E Api);\n\n\u003Cspan class=\u0022hljs-keyword\u0022\u003E$this\u003C\/span\u003E-\u0026gt;assertEquals(\u003Cspan class=\u0022hljs-comment\u0022\u003E\/* expected output *\/\u003C\/span\u003E, $handler-\u0026gt;handle());\n\u003C\/code\u003E\u003C\/pre\u003E\u003Csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 style=\u0022display: none;\u0022\u003E\u003C\/svg\u003E","tags":["aop","aspectmock","czas","datetime","php","programowanie"],"hasMore":true,"image":"https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_small.jpeg","introLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_big.jpeg\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_mini.jpeg\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022145.66037735849\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EW pewnym projekcie operuj\u0119 poprzez API na li\u015bcie wyda\u0144 produktu: zamykam wydania, kt\u00f3rych czas ju\u017c min\u0105\u0142, i tworz\u0119 nowe na osiem tygodni naprz\u00f3d. Moimi punktami odniesienia w czasie s\u0105:\u003C\/p\u003E","contentLite":"\u003Cfigure\u003E\u003Ca href=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_big.jpeg\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E\u003Cimg src=\u0022https:\/\/avris.it\/image\/php-aspectmock-fa\u0142szowanie-czasu_mini.jpeg\u0022 alt=\u0022\u0022 width=\u0022240\u0022 height=\u0022145.66037735849\u0022 loading=\u0022lazy\u0022\u003E\u003C\/a\u003E\u003C\/figure\u003E\u003C\/p\u003E\n\u003Cp\u003EW pewnym projekcie operuj\u0119 poprzez API na li\u015bcie wyda\u0144 produktu: zamykam wydania, kt\u00f3rych czas ju\u017c min\u0105\u0142, i tworz\u0119 nowe na osiem tygodni naprz\u00f3d. Moimi punktami odniesienia w czasie s\u0105:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime\u003C\/code\u003E \u2013 dzi\u015b,\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime(\u0027+8 weeks\u0027)\u003C\/code\u003E \u2013 koniec okresu, w kt\u00f3rym tworz\u0119 wydania,\u003C\/li\u003E\n\u003Cli\u003E\u003Ccode\u003Enew \\DateTime(\u0027last friday\u0027)\u003C\/code\u003E \u2013 bo cykl ka\u017cdego wydania ko\u0144czy si\u0119 w pi\u0105tek, od tej daty iteruj\u0119 \u003Ccode\u003E+1 week\u003C\/code\u003E tworz\u0105c nowe wydania.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EDwie sprawy komplikuj\u0105 nam \u017cycie, je\u015bli chcemy stworzy\u0107 testy jednostkowe do tej klasy: po pierwsze nie powinni\u015bmy \u003Cem\u003Enaprawd\u0119\u003C\/em\u003E odwo\u0142ywa\u0107 si\u0119 do API, a jedynie uda\u0107 zapytania, a po drugie powinni\u015bmy uda\u0107 \u017ce \u003Cem\u003Edzisiaj\u003C\/em\u003E jest kt\u00f3ry\u015btam, jaka\u015b sta\u0142a data, do kt\u00f3rej b\u0119d\u0105 dostosowane nasze przypadki testowe.\u003C\/p\u003E\n\u003Cp\u003EMusimy zatem stworzy\u0107 par\u0119 dubli \u2013 klas, kt\u00f3re \u201cprzys\u0142oni\u0105\u201d swoje pierwowzory, podmieniaj\u0105c niekt\u00f3re ich metody na swoje. \u015awietnym narz\u0119dziem do tego celu jest biblioteka \u003Ca href=\u0022https:\/\/github.com\/Codeception\/AspectMock\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003E AspectMock\u003C\/a\u003E, potrafi\u0105ca stworzy\u0107 takie duble, kt\u00f3re wszystkim innym nawet si\u0119 nie \u015bni\u0142y (np. duble metod statycznych czy funkcji systemowych).\u003C\/p\u003E\n\u003Cp\u003ENiestety, cho\u0107 AspectMock potrafi \u201cnadpisa\u0107\u201d funkcj\u0119 \u003Ccode\u003Etime()\u003C\/code\u003E, na nic to si\u0119 zda, je\u015bli u\u017cywamy \u003Ccode\u003EDateTime\u003C\/code\u003E (a kto nie u\u017cywa?), a j\u0105 nadpisa\u0107 jest ju\u017c ci\u0119\u017cej. Na szcz\u0119\u015bcie da si\u0119 to zrobi\u0107 za pomoc\u0105 pewnej sztuczki:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode\u003E\u0026lt;?php\nnamespace VR\\Redmine;\n\nclass VersionsHandler\n{\n    \/** @var Api *\/\n    private $api;\n\n    private $now;\n\n    private $until;\n\n    public function __construct(Api $api)\n    {\n        $this-\u0026gt;api = $api;\n\n        $this-\u0026gt;now = TimeProvider::getDateTimeFormatted();\n\n        $this-\u0026gt;until = TimeProvider::getDateTimeFormatted(\u0027+8 weeks\u0027);\n    }\n\n    \/\/ (...)\n\n    private function getToBeCreated()\n    {\n        $current = TimeProvider::getDateTime(\u0027last friday\u0027);\n        \/\/ (...)\n    }\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EJak wida\u0107, we wszystkich miejscach, gdzie normalnie u\u017cy\u0142bym \u003Ccode\u003EDateTime\u003C\/code\u003E, ja korzystam z klasy \u003Ccode\u003ETimeProvider\u003C\/code\u003E. Jest ona bardzo pro\u015bciutka:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode\u003E\u0026lt;?php\nnamespace VR\\Redmine;\n\nclass TimeProvider\n{\n    public static function getDateTime($time = \u0027now\u0027)\n    {\n        return new \\DateTime($time);\n    }\n\n    public static function getDateTimeFormatted($time = \u0027now\u0027)\n    {\n        $datetime = self::getDateTime($time);\n\n        return $datetime-\u0026gt;format(\u0027Y.\\WW\u0027);\n    }\n}\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EI istnieje tylko po to, by m\u00f3c j\u0105 zdublowa\u0107 w nast\u0119puj\u0105cy spos\u00f3b:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode\u003E$timeProxy = Test::double(\u0027VR\\\\Redmine\\\\TimeProvider\u0027, [\u0027getDateTime\u0027 =\u0026gt; function($time) {\n    $dt = new \\DateTime(\u00272015-01-14\u0027);\n    return $dt-\u0026gt;modify($time);\n}]);\u003C\/code\u003E\u003C\/pre\u003E\n\u003Cp\u003EA zatem podczas normalnego uruchomienia aplikacji, \u003Ccode\u003ETimeProvider\u003C\/code\u003E dzia\u0142a po prostu jak nicnierobi\u0105ca fabryka \u003Ccode\u003EDateTime\u003C\/code\u003E\u2019\u00f3w. W czasie test\u00f3w jednak obiera ona za punkt odniesienia arbitraln\u0105 dat\u0119 \u003Ccode\u003E2015-01-04\u003C\/code\u003E, a potem modyfikuje j\u0105 o to, co podamy jej w parametrze, jak jakby dzi\u015b by\u0142 \u003Ccode\u003E2015-01-04\u003C\/code\u003E. Zawsze, niezale\u017cnie kiedy uruchomimy test.\u003C\/p\u003E\n\u003Cp\u003ETeraz wystarczy tylko zdublowa\u0107 funkcj\u0119 odwo\u0142uj\u0105c\u0105 si\u0119 do API i przeprowadzi\u0107 testy:\u003C\/p\u003E\n\u003Cpre\u003E\u003Ccode\u003E$apiProxy = Test::double(\n  \u0027VR\\\\Redmine\\\\Api\u0027,\n  [\u0027curl\u0027 =\u0026gt; function($url, $method = \u0027GET\u0027, $data = []) {\n    if ($method != \u0027GET\u0027) { return null; }\n\n    return json_encode(\/* mocked api response *\/);\n}]);\n\n$handler = new VersionsHandler(new Api);\n\n$this-\u0026gt;assertEquals(\/* expected output *\/, $handler-\u0026gt;handle());\u003C\/code\u003E\u003C\/pre\u003E","words":455,"readTime":2,"lang":"pl"}}}}}