Помогите мне понять часовые пояса (для целей доставки) - PullRequest
1 голос
/ 17 августа 2010

Я использую API доставки (с fedex), и некоторые поля, которые мне нужно заполнить, запрашивают дату и время в определенном формате (я слышал, что некоторые люди называют это "зулу", похоже, это : 2006-06-26T17: 00: 00-0400) (кстати, какой хороший способ отформатировать это в php)

Я надеюсь, что смогу сделать это, используя почтовые индексы. Поэтому, если я знаю, что почтовый индекс пользователя - 12345, и они говорят, что хотят получить посылку между 9 и 12 утра, я могу отформатировать ее с правильным смещением.

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

Спасибо за любое направление, которое вы можете дать.

Ответы [ 2 ]

4 голосов
/ 17 августа 2010

Вот источник для бесплатного набора данных (в формате Excel) , который отображает почтовые индексы и часовые пояса, а также штаты и города, конечно. Почтовый индекс является хорошим выбором для детализации при сопоставлении с изменениями часового пояса и перехода на летнее время в связи с особыми случаями, такими как штат Индиана, где различные округа решают, следует ли наблюдать за переходом на летнее время.

Что касается реализации с этими данными: внимательно прочитайте API FedEx. Это должно быть четко прописано в их документации. Я предполагаю, что все, что вам действительно нужно, это изучить тему. Не торопись. Не торопитесь, потому что вы хотите сделать это правильно с первого раза. Я участвовал в нескольких проектах в качестве младшего разработчика, где mgmt игнорировал часовые пояса и позже заплатил высокую цену.

Для начала: Зулусское время - это своего рода синоним GMT и UTC, термины, которые означают одно и то же и имеют тенденцию взаимозаменяемо использоваться. Когда они используются, они означают, что любая дата и время, о которых идет речь, каким-то образом относятся к общей точке отсчета, которая проходит через Гринвич (и, следовательно, GMT = Среднее время по Гринвичу).

Что бы вы ни делали, независимо от того, что вы храните свои данные, убедитесь, что вы всегда можете рассчитать zulu / utc / gmt из значения или, что еще лучше, сохранить zulu и просто настроить отображение для часового пояса клиента. Есть несколько способов пойти. Здесь - это один . Он специфичен для Sql Server, но концепции и стратегии должны соответствовать любому типу БД или постоянному хранилищу, которое вы используете.

Для последней части вопроса вы должны хранить оба раза по отдельности. Слово между подразумевает два значения, и это правильный способ сделать это. Помимо того, что этот тип решения является более полным, он поможет вам разобраться со случаем «что, если время начала в 23:00, а время окончания в 2:00 на переключателе перехода на летнее время?»

Удачи!

P.S. Вот интересная небольшая статья, прочитанная в статье SO . Это для стека MS, но, тем не менее, интересно и подкрепляет некоторые из моих утверждений. Например. лучше хранить UTC / GMT, а затем конвертировать ... Но прочитайте ответы, все они имеют некоторые правильные точки и кратки.

0 голосов
/ 17 августа 2010

Для преобразования почтового индекса в часовой пояс вы, к сожалению, самостоятельно.Тем не менее, быстрый поиск в Google нашел меня, что может вас заинтересовать:

http://www.webservicex.net/uszip.asmx

Что касается форматирования, вам повезло.В PHP 5 есть формат даты , встроенный:

date('c');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...