Потратив много времени на решение этой проблемы, не пытайтесь самостоятельно осуществлять перевод часовых поясов. Это королевская PIA, сопряженная с трудностями, и очень трудно понять ее на международном уровне.
Тем не менее, лучший вариант - преобразовать ваши datetime s в MySQL в timestamp s и просто использовать базу данных для преобразования времени:
mysql> set time_zone='America/New_York';
отметка времени с в MySQL меньше и поддерживают перевод часовых поясов. datetime нет.
Перед тем, как отобразить информацию о сайте на странице, просто вызовите указанную выше команду, и она будет отображаться правильно, без каких-либо изменений кода PHP.
Предостережения:
- Если вы используете NOW () или любые другие функции местного времени, вам следует обновить их до UTC_TIMESTAMP ()
- отметка времени s содержит интересные обновления и вставляет свойства, которые вы можете отключить.
Для отключения отметка времени свойства:
ALTER TABLE mytable CHANGE COLUMN Created Created timestamp NULL DEFAULT 0;
DEFAULT 0 отключает обновление столбца при обновлении других столбцов.