Difference between revisions of "30W Time Zone Rule"

From Geohashing
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.
  
A new version of the map program is being posted concurrently with this blog entry.  The first coordinates that will be affected by it are Tuesday’s.  Again, this does not affect anyone in the Americas.
+
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.

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.

See also