Как увеличить временную метку MySQL в PHP?

#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)
  

Это вернет вам время смещения