При добавлении записи в базу данных я использую 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));
Ты можешь использовать 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
с действительными значениями. Вы можете получить их список Вот.
Вам лучше установить часовой пояс для вашего соединения, NOW()
и лайки вернут правильный:
SET time_zone = 'Europe/Amsterdam'
Это SQL-запрос. Вам необходимо выполнить его после подключения.
Конечно, это только для новых вставок и обновлений, вы должны исправить также существующие:
UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)