Изменение даты сохраненной базы данных на текущий часовой пояс (strtotime?)

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

При извлечении этой отметки даты из базы данных мне нужно отрегулировать ее значение на +8 часов, чтобы она отображала «правильное» время на моем сайте. Однако мне нужно strtotime это создать полезную дату в первую очередь, затем strtotime это до +8 часов, то strtotime чтобы изменить его на нужный формат, верно?

Я пробовал несколько итераций утверждений, но я могу либо получить 30 Sep 07:35 или же 01 Jan 00:00 результаты, а не запрашиваемые 30 Sep 15:35,

Значение хранится в базе данных в datetime формат: 2014-09-30 07:35:36

Одна из многих вещей, которые я безуспешно пытался:

$chat_time = date("Y-m-d H:i:s", strtotime($chat_time));
$chat_time = strtotime("+8 hours");
$chat_time = date("d M, H:i", strtotime($chat_time));

0

Решение

Ты можешь использовать DateTime() с DateTimeZone() чтобы настроить часовой пояс для значения datetime:

$chat_time = new DateTime($chat_time, new DateTimeZone('DB_TIMEZONE'));
$chat_time->setTimezone(new DateTimeZone('YOUR_TIMEZONE'));
echo $chat_time->format("d M, H:i");

Очевидно, вам нужно заменить DB_TIMEZONE а также YOUR_TIMEZONE с действительными значениями. Вы можете получить их список Вот.

3

Другие решения

Вам лучше установить часовой пояс для вашего соединения, NOW() и лайки вернут правильный:

SET time_zone = 'Europe/Amsterdam'

Это SQL-запрос. Вам необходимо выполнить его после подключения.

Конечно, это только для новых вставок и обновлений, вы должны исправить также существующие:

UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)
1

По вопросам рекламы [email protected]