Всегда ли будет часовой пояс php? - PullRequest
2 голосов
/ 18 марта 2020

Я пытаюсь интегрировать функции даты и времени PHP в мои приложения. Что у меня сейчас работает:

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

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

Я также написал свою собственную очень простую библиотеку часовых поясов, состоящую из буквальных (-12, 11) часовых смещений с некоторым понятным именем, назначенным для каждое из смещений. Предполагается, что позже это будет заменено полноценной библиотекой часовых поясов, потому что я знаю, как надо создавать новую библиотеку часовых поясов (https://www.youtube.com/watch?v=-5wpm-gesOY). Я попробовал внутреннюю библиотеку часовых поясов PHP, и все, кажется, работает отлично.

Существует канонический список часовых поясов, предоставленный PHP, доступ к которому можно получить по адресу DateTimeZone::listIdentifiers(). Я ожидаю, что PHP сама свяжется с некоторой внешней базой данных о временном хранении, чтобы динамически менять часовые пояса, если какая-либо страна изменит данные своего часового пояса. Мой вопрос, это на самом деле происходит? Если это произойдет, есть ли гарантия, что указанный c часовой пояс (скажем, America/Guatemala) все еще будет распознаваться PHP с течением времени и не выдаст ошибку при изменении часовых поясов?

Ответы [ 2 ]

3 голосов
/ 21 марта 2020

PHP часовые пояса основаны на базе данных IANA TZ и доставляются через timezonedb пакет PECL . Текущей версией на момент публикации является 2019.3, которая соответствует текущей версии IANA 2019 c. Пакет timezonedb поддерживается Derick Rethans с 2005 года, и хотя нет никаких гарантий - нет никаких оснований полагать, что он или другой PHP основной участник не будут продолжать это обслуживание на неопределенный срок.

Обратите внимание, что каждый выпуск PHP включает в себя последнюю версию timezonedb на момент выпуска. Поэтому в большинстве случаев вам не нужно обновлять пакет самостоятельно. Просто держите ваш экземпляр PHP в курсе последних выпусков, и вы получите последние данные о часовом поясе.

Пример будущего изменения на America/Guatamala будет обработан в восходящем направлении в Список обсуждения базы данных TZ сам. Этот проект является ключевой инфраструктурой Inte rnet, управляемой IETF BCP 175 / RF C 6557 . Практически нулевой риск того, что этот проект устарел, поскольку на него полагаются буквально все основные операционные системы, программные платформы и бесчисленные библиотеки и независимые проекты.

Что касается вашей пользовательской библиотеки, то вы рады, что вы смотрели Компьютерное видео, но вы также должны прочитать тэг часового пояса wiki здесь, на переполнении стека - особенно обратите внимание на раздел, помеченный как «Часовой пояс! = Смещение». Просто недостаточно назначить понятное имя фиксированному смещению, поэтому необходимо поддерживать базу данных часовых поясов и их изменений во времени.

Чтобы повторить видео, не используйте пользовательские реализация часового пояса - вам намного лучше брать зависимость от работы других. В этом случае - используйте встроенный в часовой пояс функционал от PHP.

2 голосов
/ 18 марта 2020

Как видите, здесь , PHP в значительной степени жив и будет поддерживаться в течение следующих лет. Таким образом, если изменение будет сделано, оно будет сообщено в самый ранний момент. В последних выпусках вещи были помечены как устаревшие, до того как они были полностью удалены в следующей версии. Поэтому, если постоянная часового пояса будет удалена, вы будете уведомлены в следующей версии с устаревшим уведомлением. Ни один компонент не будет удален без пометки его как устаревшего перед удалением. Это позволяет вам иметь гораздо больше времени, чем нужно для поиска решения.

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