PHP использует стандартную базу данных часовых поясов IANA. В этих данных такие значения, как "CST"
и "CST6CDT"
, существуют только для обратной совместимости с часовыми поясами POSIX. Вы не должны использовать их без крайней необходимости.
В документации по PHP это очень четко сказано:
Предупреждение
Пожалуйста, не используйте какие-либо из перечисленных здесь часовых поясов (кроме UTC), они существуют только по причинам обратной совместимости.
Вместо этого вы должны использовать "America/Chicago"
для обозначения Центрального часового пояса США.
Вы можете узнать больше о базе данных часовых поясов IANA в вики-странице тегов часовых поясов.
Отчасти причина того, что CST - плохой выбор для идентификатора часового пояса, заключается в том, что сокращения часовых поясов могут быть неоднозначными. «CST» может означать «центральное стандартное время», но это может быть центральное время США или центральное время Австралии. Это также может означать «Стандартное время Кубы» или «Стандартное время Китая».
Даже если вы знаете, что он находится в США, «CST6CDT» не очень хороший идентификатор, потому что он не учитывает, что правила DST для США изменились в 2007 году.
Относительно вашего комментария:
Я хочу оставить выбор, следовать ли летнему времени или нет, на усмотрение пользователя.
Это запах кода. Каждый раз, когда вы видите на веб-сайте флажок для перехода на летнее время [да / нет], это явный признак того, что приложение неправильно использует часовые пояса. Когда ваш пользователь выбирает часовой пояс «Америка / Чикаго» или «Америка / Лос-Анджелес», или «Европа / Лондон» и т. Д. Информация в базе данных часовых поясов уже знает, следует ли следовать летнему времени и когда. DST запускается и останавливается в разное время по всему миру, поэтому важно, чтобы вы позволяли правильно использовать базу данных.
person
Matt Johnson-Pint
schedule
16.10.2013