PHP, используйте strtotime для вычитания минут из переменной даты и времени?

Мне нужно вычесть 45 минут из переменной даты в PHP.

Код:

$thestime = '2012-07-27 20:40'; $datetime_from = date("Ymd h:i",strtotime("-45 minutes",strtotime($thestime))); echo $datetime_from; 

возвращает результат 2012-07-27 07:55 .

Однако это должно быть 2012-07-27 19:55 . Как это исправить?

Ты должен сделать:

 $datetime_from = date("Ymd H:i", strtotime("-45 minutes", strtotime($thestime))); 

Вместо H вместо h используется 24-часовой формат, представляющий час с ведущими нулями: от 00 до 23 .

Вы можете прочитать больше об этом в документации по функциям даты PHP .


Существуют также объектно-ориентированные способы выполнения этого, которые более понятны, например DateTime::sub :

 $datetime_from = (new DateTime($thestime))->sub(DateInterval::createFromDateString('45 minutes'))->format('Ymd H:i') 

Или еще более выразительный способ, предлагаемый библиотекой Carbon которая расширяет встроенный PHP-класс DateTime :

 $datetime_from = (new Carbon($thestime))->subMinutes(45)->format('Ymd H:i');