Отображение почтового индекса США в часовой пояс - PullRequest
78 голосов
/ 16 марта 2010

Когда пользователи регистрируются в нашем приложении, мы можем вывести их почтовый индекс, когда мы проверяем их по национальной базе данных. Каков наилучший способ определить правильное потенциальное предположение об их часовом поясе из этого почтового индекса?

Мы пытаемся свести к минимуму объем данных, к которым мы явно должны их запрашивать. Они смогут вручную установить часовой пояс позже, если наше лучшее предположение неверно. Я понимаю, что почтовые индексы не помогут в определении часового пояса за пределами США, но в этом случае нам все равно придется спрашивать вручную, и мы имеем дело преимущественно с США, независимо от того.

Я нашел много баз данных с почтовым индексом, и пока только несколько содержат информацию о часовом поясе, но те, которые не являются бесплатными, такие как эта . Если для этого абсолютно необходимо оплатить подписку на услугу, это не будет стоить этого, и нам просто придется явно спросить пользователей.

Хотя язык не особенно важен, так как я, вероятно, могу преобразовать вещи, которые необходимы, мы используем PHP и MySQL.

Ответы [ 14 ]

1 голос
/ 05 июня 2010
0 голосов
/ 12 июня 2016

Для этого есть отличный API Google. Он принимает местоположение и возвращает часовой пояс для этого места. Должно быть достаточно просто создать скрипт bash или python, чтобы получить результаты для каждого адреса в файле CSV или базе данных, а затем сохранить информацию о часовом поясе.

https://developers.google.com/maps/documentation/timezone/start

Конечная точка запроса:

https://maps.googleapis.com/maps/api/timezone/json?location=38.908133,-77.047119&timestamp=1458000000&key=YOUR_API_KEY

Ответ:

{
   "dstOffset" : 3600,
   "rawOffset" : -18000,
   "status" : "OK",
   "timeZoneId" : "America/New_York",
   "timeZoneName" : "Eastern Daylight Time"
}
0 голосов
/ 08 июня 2015

Это загрузит файл yaml, который отобразит все часовые пояса в массив их почтовых индексов:

curl https://gist.githubusercontent.com/anonymous/01bf19b21da3424f6418/raw/0d69a384f55c6f68244ddaa07e0c2272b44cb1de/timezones_to_zipcodes.yml > timezones_to_zipcodes.yml

, например

"Eastern Time (US & Canada)" => ["00100", "00101", "00102", "00103", "00104", ...]
"Central Time (US & Canada)" => ["35000", "35001", "35002", "35003", "35004", ...]
etc...

Если вы предпочитаете сокращенные часовые пояса, вы можете запустить этот:

curl https://gist.githubusercontent.com/anonymous/4e04970131ca82945080/raw/e85876daf39a823e54d17a79258b170d0a33dac0/timezones_to_zipcodes_short.yml > timezones_to_zipcodes.yml

1010 *, например *

"EDT" => ["00100", "00101", "00102", "00103", "00104", ...]
"CDT" => ["35000", "35001", "35002", "35003", "35004", ...]
etc...
0 голосов
/ 20 октября 2011

Также обратите внимание, что если вы используете службу геокодирования Yahoo, вы можете получить информацию о часовом поясе, установив правильный флаг.

http://developer.yahoo.com/geo/placefinder/guide/requests.html#flags-parameter

...