Difference between revisions of "30W Time Zone Rule"
imported>Xkcd (New page: There’s been a small change to the algorithm to deal with time zones. This change does not affect anyone in North/South America (excluding Greenland), does not affect Saturday meetup tim...) |
|||
(72 intermediate revisions by 31 users not shown) | |||
Line 1: | Line 1: | ||
− | There’s been a small change to the algorithm to deal with time zones. This change does not affect anyone in North/South America (excluding Greenland), does not affect Saturday meetup times anywhere, and does not change any currently known upcoming meeting times. The change: | + | ''[https://blog.xkcd.com/2008/05/23/geohashing-followup-change-to-algorithm-for-europe-africa-asia-australia/ Announced] Saturday, May 24, 2008 03:34 UTC by Randall Munroe, inventor of geohashing'' |
+ | |||
+ | There’s been a small change to the [[algorithm]] to deal with time zones. This change does not affect anyone in North/South America (excluding eastern Greenland), does not affect [[Saturday meetup]] times anywhere, and does not change any currently known upcoming meeting times. [http://blog.xkcd.com/2008/05/23/geohashing-followup-change-to-algorithm-for-europe-africa-asia-australia/ The change]: | ||
For every location east of Longitude -30 (Europe, Africa, Asia, and Australia), | For every location east of Longitude -30 (Europe, Africa, Asia, and Australia), | ||
Line 12: | Line 14: | ||
This is necessary to deal with time zone problems. For a lot of Europe, the Wednesday Dow opening was learned near sundown Wednesday, which meant they couldn’t use it to get to daytime meetups. For east Asia, they had to visit weekday locations the next day. A bunch of solutions were discussed, and I decided this was the cleanest. | This is necessary to deal with time zone problems. For a lot of Europe, the Wednesday Dow opening was learned near sundown Wednesday, which meant they couldn’t use it to get to daytime meetups. For east Asia, they had to visit weekday locations the next day. A bunch of solutions were discussed, and I decided this was the cleanest. | ||
− | + | The [http://xkcd.com/geohashing map program] has been updated with this rule. The first coordinates that will be affected by it are for '''[[2008-05-27|Tuesday, May 27, 2008]]'''. Again, this does '''not''' affect anyone in the Americas. | |
+ | |||
+ | == Implementations == | ||
+ | |||
+ | Authors of existing [[implementations]] are encouraged to update them before '''12:00 UTC on Monday, May 26''' so that your users in the easternmost time zones can have a smooth transition. Once updated, add <CODE><NOWIKI>{{30w compliant|yes=1}}</NOWIKI></CODE> to the [[Implementations]] page. | ||
+ | |||
+ | == Announcement Templates == | ||
+ | |||
+ | In affected areas (east of -30° longitude), please add <CODE><NOWIKI>{{pre30w}}</NOWIKI></CODE> to old expedition pages from '''May 21-23, 2008'''. (May 24-26 are unaffected due to the weekend and the [[Dow holiday]] for Memorial Day.) | ||
+ | |||
+ | == Terminology == | ||
+ | |||
+ | The following terms may be found referring to the adjusted coordinates for locations east of W30: | ||
+ | * W30 adjusted coordinates | ||
+ | * W30 coordinates | ||
+ | * Eastern coordinates | ||
+ | Coordinates for those locations west of W30 may be found using these terms: | ||
+ | * Non-W30 coordinates | ||
+ | * Western coordinates | ||
+ | |||
+ | == 30W compliance confusion matrix == | ||
+ | |||
+ | The various definitions on the W30 and globalhash pages create an interesting <s>mess</s> situation when going back in time for retro hashes. This table might help you to get things straight rightaway, so that you know whether to take the current day's Dow value or the previous day's. | ||
+ | |||
+ | {| border="1" cellpadding="4" cellspacing="0" style="border:\#c9c9c9 1px solid; margin: 1em 1em 1em 0; border-collapse: collapse;" | ||
+ | |rowspan="2"| | ||
+ | !colspan="2"| 2008-05-26 and earlier | ||
+ | !colspan="2"| 2008-05-27 and later | ||
+ | |- | ||
+ | ! West of 30W | ||
+ | ! East of 30W | ||
+ | ! West of 30W | ||
+ | ! East of 30W | ||
+ | |- | ||
+ | ! Geohash | ||
+ | || same day | ||
+ | || same day | ||
+ | || same day | ||
+ | |style="background-color:#ffd;"| previous day | ||
+ | |- | ||
+ | ! Globalhash | ||
+ | |style="background-color:#ffd;" colspan="2"| previous day | ||
+ | |style="background-color:#ffd;" colspan="2"| previous day | ||
+ | |} | ||
+ | |||
+ | Or to put it another way, retro '''globalhashes''' ''always'' take the previous day's Dow Jones value. Retro '''geohashes''' east of 30W only apply this rule ''after 2008-05-26''. Inconsistent, yes, but that's the way it has come about. Use the table below if you want to check your implementation. | ||
+ | |||
+ | == Testing for 30W compliance == | ||
+ | |||
+ | Here are the geohash coordinates in Greenland around the time of that the W30 rule was introduced. Coordinates rounded to 5 decimal places. You can use this to confirm that your application produces the right coordinates. Coordinates with 30W rule applied are highlighted. | ||
+ | |||
+ | {| border="1" cellpadding="4" cellspacing="0" style="border:\#c9c9c9 1px solid; margin: 1em 1em 1em 0; border-collapse: collapse;" | ||
+ | | align="center" style="background:#f0f0f0;"|'''Date''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''DJIA''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Hash string''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Hash string east of W30''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Globalhash string''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Coordinates 68, -30''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Coordinates 68, -29''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Globalhash''' | ||
+ | |- | ||
+ | | 2008-05-20||13026.04||2008-05-20-13026.04||2008-05-20-13026.04 | ||
+ | |style="background-color:#ffd;"|2008-05-20-12985.41||68.63099, -30.61895||68.63099, -29.61895 | ||
+ | |style="background-color:#ffd;"|-46.71388, -135.48197 | ||
+ | |- | ||
+ | | 2008-05-21||12824.94||2008-05-21-12824.94||2008-05-21-12824.94 | ||
+ | |style="background-color:#ffd;"|2008-05-21-13026.04||68.17947, -30.86154||68.17947, -29.86154 | ||
+ | |style="background-color:#ffd;"|85.74626, 146.18662 | ||
+ | |- | ||
+ | | 2008-05-22||12597.69||2008-05-22-12597.69||2008-05-22-12597.69 | ||
+ | |style="background-color:#ffd;"|2008-05-22-12824.94||68.97287, -30.2387||68.97287, -29.2387 | ||
+ | |style="background-color:#ffd;"|61.62927, 69.96869 | ||
+ | |- | ||
+ | | 2008-05-23||12620.90||2008-05-23-12620.90||2008-05-23-12620.90 | ||
+ | |style="background-color:#ffd;"|2008-05-23-12597.69||68.40025, -30.72277||68.40025, -29.72277 | ||
+ | |style="background-color:#ffd;"|78.42559, 129.50128 | ||
+ | |- | ||
+ | | 2008-05-24||12620.90||2008-05-24-12620.90||2008-05-24-12620.90 | ||
+ | |style="background-color:#ffd;"|2008-05-24-12620.90||68.12665, -30.54753||68.12665, -29.54753 | ||
+ | |style="background-color:#ffd;"|-67.20336, 17.11192 | ||
+ | |- | ||
+ | | 2008-05-25||12620.90||2008-05-25-12620.90||2008-05-25-12620.90 | ||
+ | |style="background-color:#ffd;"|2008-05-25-12620.90||68.94177, -30.18287||68.94177, -29.18287 | ||
+ | |style="background-color:#ffd;"|79.51947, -114.16550 | ||
+ | |- | ||
+ | | 2008-05-26||12620.90||2008-05-26-12620.90||2008-05-26-12620.90 | ||
+ | |style="background-color:#ffd;"|2008-05-26-12620.90||68.67313, -30.60731||68.67313, -29.60731 | ||
+ | |style="background-color:#ffd;"|31.16306, 38.63088 | ||
+ | |- | ||
+ | | 2008-05-27||12479.63||2008-05-27-12479.63 | ||
+ | |style="background-color:#ffd;"|2008-05-27-12620.90 | ||
+ | |style="background-color:#ffd;"|2008-05-27-12620.90||68.20968, -30.10144 | ||
+ | |style="background-color:#ffd;"|68.12537, -29.57711 | ||
+ | |style="background-color:#ffd;"|-67.43391, 27.75993 | ||
+ | |- | ||
+ | | 2008-05-28||12542.90||2008-05-28-12542.90 | ||
+ | |style="background-color:#ffd;"|2008-05-28-12479.63 | ||
+ | |style="background-color:#ffd;"|2008-05-28-12479.63||68.68745, -30.21221 | ||
+ | |style="background-color:#ffd;"|68.71044, -29.11273 | ||
+ | |style="background-color:#ffd;"|37.87947, -139.41640 | ||
+ | |- | ||
+ | | 2008-05-29||12593.87||2008-05-29-12593.87 | ||
+ | |style="background-color:#ffd;"|2008-05-29-12542.90 | ||
+ | |style="background-color:#ffd;"|2008-05-29-12542.90||68.4647, -30.03412 | ||
+ | |style="background-color:#ffd;"|68.27833, -29.74114 | ||
+ | |style="background-color:#ffd;"|-39.90121, 86.81114 | ||
+ | |- | ||
+ | | 2008-05-30||12647.36||2008-05-30-12647.36 | ||
+ | |style="background-color:#ffd;"|2008-05-30-12593.87 | ||
+ | |style="background-color:#ffd;"|2008-05-30-12593.87||68.8531, -30.2446 | ||
+ | |style="background-color:#ffd;"|68.32272, -29.70458 | ||
+ | |style="background-color:#ffd;"|-31.91030, 73.65004 | ||
+ | |} | ||
+ | |||
+ | == Testing for the scientific notation bug == | ||
+ | |||
+ | {| border="1" cellpadding="4" cellspacing="0" style="border:\#c9c9c9 1px solid; margin: 1em 1em 1em 0; border-collapse: collapse;" | ||
+ | | align="center" style="background:#f0f0f0;"|'''Date''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''DJIA''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Hash string''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Hash string east of W30''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Globalhash string''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Coordinates 68, -30''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Coordinates 68, -29''' | ||
+ | | align="center" style="background:#f0f0f0;"|'''Globalhash''' | ||
+ | |- | ||
+ | | 2012-02-26||12981.20||2012-02-26-12981.20 | ||
+ | |style="background-color:#ffd;"|2012-02-26-12981.20 | ||
+ | |style="background-color:#ffd;"|2012-02-26-12981.20 | ||
+ | |style="background-color:#fdd;"|68.000047, -30.483719 | ||
+ | |style="background-color:#fdd;"|68.000047, -29.483719 | ||
+ | |style="background-color:#ffd;"|-89.99161, -5.86128 | ||
+ | |} | ||
+ | Note: Erroneous implementations might evaluate the decimal digits as 4.7e-5 and fail in calculating a correct latitude. | ||
+ | |||
+ | == See also == | ||
+ | |||
+ | * [http://blag.xkcd.com/2008/05/23/geohashing-followup-change-to-algorithm-for-europe-africa-asia-australia/ Randall's official blag post on the issue] | ||
+ | * [[Talk:Main Page/Archive#Europe Time Zones problem|Archived discussion on the issue]] | ||
+ | |||
+ | [[Category:Algorithm]] |
Latest revision as of 04:42, 31 March 2022
Announced Saturday, May 24, 2008 03:34 UTC by Randall Munroe, inventor of geohashing
There’s been a small change to the algorithm to deal with time zones. This change does not affect anyone in North/South America (excluding eastern Greenland), does not affect Saturday meetup times anywhere, and does not change any currently known upcoming meeting times. The change:
For every location east of Longitude -30 (Europe, Africa, Asia, and Australia), use the Dow opening from the previous day — even if a new one becomes available partway through the day.
Put differently (the same functionally for everywhere except islands in the mid-Atlantic):
Consider any Dow openings published after noon local time to have occurred on the next day.
This is necessary to deal with time zone problems. For a lot of Europe, the Wednesday Dow opening was learned near sundown Wednesday, which meant they couldn’t use it to get to daytime meetups. For east Asia, they had to visit weekday locations the next day. A bunch of solutions were discussed, and I decided this was the cleanest.
The map program has been updated with this rule. The first coordinates that will be affected by it are for Tuesday, May 27, 2008. Again, this does not affect anyone in the Americas.
Contents
Implementations
Authors of existing implementations are encouraged to update them before 12:00 UTC on Monday, May 26 so that your users in the easternmost time zones can have a smooth transition. Once updated, add {{30w compliant|yes=1}}
to the Implementations page.
Announcement Templates
In affected areas (east of -30° longitude), please add {{pre30w}}
to old expedition pages from May 21-23, 2008. (May 24-26 are unaffected due to the weekend and the Dow holiday for Memorial Day.)
Terminology
The following terms may be found referring to the adjusted coordinates for locations east of W30:
- W30 adjusted coordinates
- W30 coordinates
- Eastern coordinates
Coordinates for those locations west of W30 may be found using these terms:
- Non-W30 coordinates
- Western coordinates
30W compliance confusion matrix
The various definitions on the W30 and globalhash pages create an interesting mess situation when going back in time for retro hashes. This table might help you to get things straight rightaway, so that you know whether to take the current day's Dow value or the previous day's.
2008-05-26 and earlier | 2008-05-27 and later | |||
---|---|---|---|---|
West of 30W | East of 30W | West of 30W | East of 30W | |
Geohash | same day | same day | same day | previous day |
Globalhash | previous day | previous day |
Or to put it another way, retro globalhashes always take the previous day's Dow Jones value. Retro geohashes east of 30W only apply this rule after 2008-05-26. Inconsistent, yes, but that's the way it has come about. Use the table below if you want to check your implementation.
Testing for 30W compliance
Here are the geohash coordinates in Greenland around the time of that the W30 rule was introduced. Coordinates rounded to 5 decimal places. You can use this to confirm that your application produces the right coordinates. Coordinates with 30W rule applied are highlighted.
Date | DJIA | Hash string | Hash string east of W30 | Globalhash string | Coordinates 68, -30 | Coordinates 68, -29 | Globalhash |
2008-05-20 | 13026.04 | 2008-05-20-13026.04 | 2008-05-20-13026.04 | 2008-05-20-12985.41 | 68.63099, -30.61895 | 68.63099, -29.61895 | -46.71388, -135.48197 |
2008-05-21 | 12824.94 | 2008-05-21-12824.94 | 2008-05-21-12824.94 | 2008-05-21-13026.04 | 68.17947, -30.86154 | 68.17947, -29.86154 | 85.74626, 146.18662 |
2008-05-22 | 12597.69 | 2008-05-22-12597.69 | 2008-05-22-12597.69 | 2008-05-22-12824.94 | 68.97287, -30.2387 | 68.97287, -29.2387 | 61.62927, 69.96869 |
2008-05-23 | 12620.90 | 2008-05-23-12620.90 | 2008-05-23-12620.90 | 2008-05-23-12597.69 | 68.40025, -30.72277 | 68.40025, -29.72277 | 78.42559, 129.50128 |
2008-05-24 | 12620.90 | 2008-05-24-12620.90 | 2008-05-24-12620.90 | 2008-05-24-12620.90 | 68.12665, -30.54753 | 68.12665, -29.54753 | -67.20336, 17.11192 |
2008-05-25 | 12620.90 | 2008-05-25-12620.90 | 2008-05-25-12620.90 | 2008-05-25-12620.90 | 68.94177, -30.18287 | 68.94177, -29.18287 | 79.51947, -114.16550 |
2008-05-26 | 12620.90 | 2008-05-26-12620.90 | 2008-05-26-12620.90 | 2008-05-26-12620.90 | 68.67313, -30.60731 | 68.67313, -29.60731 | 31.16306, 38.63088 |
2008-05-27 | 12479.63 | 2008-05-27-12479.63 | 2008-05-27-12620.90 | 2008-05-27-12620.90 | 68.20968, -30.10144 | 68.12537, -29.57711 | -67.43391, 27.75993 |
2008-05-28 | 12542.90 | 2008-05-28-12542.90 | 2008-05-28-12479.63 | 2008-05-28-12479.63 | 68.68745, -30.21221 | 68.71044, -29.11273 | 37.87947, -139.41640 |
2008-05-29 | 12593.87 | 2008-05-29-12593.87 | 2008-05-29-12542.90 | 2008-05-29-12542.90 | 68.4647, -30.03412 | 68.27833, -29.74114 | -39.90121, 86.81114 |
2008-05-30 | 12647.36 | 2008-05-30-12647.36 | 2008-05-30-12593.87 | 2008-05-30-12593.87 | 68.8531, -30.2446 | 68.32272, -29.70458 | -31.91030, 73.65004 |
Testing for the scientific notation bug
Date | DJIA | Hash string | Hash string east of W30 | Globalhash string | Coordinates 68, -30 | Coordinates 68, -29 | Globalhash |
2012-02-26 | 12981.20 | 2012-02-26-12981.20 | 2012-02-26-12981.20 | 2012-02-26-12981.20 | 68.000047, -30.483719 | 68.000047, -29.483719 | -89.99161, -5.86128 |
Note: Erroneous implementations might evaluate the decimal digits as 4.7e-5 and fail in calculating a correct latitude.