#php #mysql #datetime
#php #mysql #дата и время
Вопрос:
Итак, у меня есть временная метка MYSQL, которая генерирует значения, которые на 4 часа опережают то, какими они должны быть. Как бы мне вычесть 4 часа из временной метки MySQL и отобразить это?
Вот мой текущий код
$mdate = date('F j, Y, g:i a',strtotime( $bm->date_added));
//$bm->dated_added returns the times stamp//
echo $mdate;
Спасибо
Комментарии:
1. Это грубое решение, которое не пытается выяснить, почему у вас есть часы впереди. В каком часовом поясе вы находитесь? На какой часовой пояс настроен ваш сервер?
Ответ №1:
При предоставлении второго аргумента strtotime()
будет выполнять вычисления на основе этой даты:
$mdate = date('F j, Y, g:i a', strtotime('-4 hours', $bm->date_added));
strtotime()
может выполнять несколько вычислений на основе модификаторов, подобных этим. Примеры из руководства:
<?php
echo strtotime("now"), "n";
echo strtotime("10 September 2000"), "n";
echo strtotime(" 1 day"), "n";
echo strtotime(" 1 week"), "n";
echo strtotime(" 1 week 2 days 4 hours 2 seconds"), "n";
echo strtotime("next Thursday"), "n";
echo strtotime("last Monday"), "n";
?>
Ответ №2:
Вы действительно должны выяснить основную проблему и исправить ее. Скорее всего, вам нужно настроить часовой пояс MySQL в соответствии с вашим собственным (или на самом сервере установлена неправильная дата).
Тем не менее, вы можете просто вычесть 14 400 секунд из результата strtotime.
$mdate = date('F j, Y, g:i a',strtotime($bm->date_added) - 14400);
Ответ №3:
Используйте функцию SUBTIME () в своем запросе, если вы не можете изменить время сервера, чтобы отразить соответствующую временную метку
Ответ №4:
Подход SQL:
SELECT TIMESTAMPADD(the_timestamp, INTERVAL -4 HOURS)
Это вернет вам время смещения