Являются ли «США / Восточный» и «США / Центральный» и «США / Тихий океан» устаревшими для strftime или только для PHP? - PullRequest
8 голосов
/ 02 марта 2012

У меня есть сценарий оболочки (точнее, zsh), который использует

strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

для генерации "текущего времени", такого как

"02:45 PM CST (чт, март 01) "

Это должно быть в состоянии отображать время в нескольких разных часовых поясах США, поэтому я использую 'US / Eastern', 'US / Central' и«США / Тихоокеанский регион» примерно так:

export TZ='US/Eastern'
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

Кажется, это работает просто отлично, и я предпочитаю использовать TZ = 'America / CityName', потому что мне не нужно знать, какой город находится вкакой TZ, я просто должен сказать ему, какой TZ я хочу.

Однако я столкнулся с http://www.php.net/manual/en/timezones.others.php и увидел, что там написано

Пожалуйста, не используйте никакихиз часовых поясов, перечисленных здесь (кроме UTC), они существуют только по причинам обратной совместимости.

Я не знаю, какие проблемы с именами в США / регионе, но мне интересно знатьесли их использование может вызвать проблемы в обозримом будущем, или они все еще безопасны в использовании?Это просто PHP, который не любит их, или все уходят от них?

1 Ответ

9 голосов
/ 03 марта 2012

Стандартный формат для именования часовых поясов в базе данных Olson - Континент / Город. «Старые» имена, которые вы упоминаете, такие как US / Eastern, US / Central и многие другие, перечислены как ссылки обратной совместимости в исходном дистрибутиве tzdata (в файле «backward»). Согласно комментарию вверху файла, эти имена могли стать ссылками обратной совместимости в конце 1993 года.

Мне кажется, я помню, что читал, что этот стандарт был принят, потому что он чувствовал себя более стабильным: геополитические (страновые) границы меняются, города никогда не перемещаются. Возможно, также потому, что такие названия, как «восточный» и «центральный», считаются более запутанными, потому что они означают разные часовые пояса в разных частях света. Однако в настоящее время я не могу найти никаких ссылок на обоснование имен, поэтому не цитируйте меня по этому поводу.

Предпочтительны названия в стиле континент / город. Обратите внимание, что операционные системы, такие как Debian и Ubuntu, просят вас выбрать системный часовой пояс, используя эти имена (если они не определяют его автоматически во время установки). Используя эти имена, вам не нужно, как вы говорите, «знать, какой город находится в который TZ ", потому что название города, ну, часть названия часового пояса! Поэтому, если вы узнали имена Континента / Города вместо или в дополнение к названиям Страны / Региона, вы уже в порядке.

При этом я не думаю, что эти имена когда-нибудь исчезнут. В списке рассылки о часовых поясах они всегда называются «обратной совместимостью», а не «не рекомендуется» и предназначены для сохранения, несмотря на то, что рекомендует PHP.

...