как вычесть 24 часа из объекта времени в PHP

У меня есть следующий код:

$now = date("Ymd H:m:s"); $date = date("Ymd H:m:s", strtotime('-24 hours', $now)); 

Однако теперь это дает мне эту ошибку:

 A non well formed numeric value encountered in... 

почему это?

 $date = (new \DateTime())->modify('-24 hours'); 

или

 $date = (new \DateTime())->modify('-1 day'); 

(Последний учитывает этот комментарий, поскольку это действительная точка.)

Должен работать отлично для вас здесь. См. http://PHP.net/datetime

$ date будет экземпляром DateTime , реального объекта DateTime.

strtotime() ожидает strtotime() unix ( number seconds since Jan 01 1970 )

 $date = date("Ymd H:i:s", strtotime('-24 hours', time())); ////time() is default so you do not need to specify. 

я бы предложил использовать библиотеку datetime, так как это более объектно-ориентированный подход.

 $date = new DateTime(); //date & time of right now. (Like time()) $date->sub(new DateInterval('P1D')); //subtract period of 1 day 

Преимущество этого заключается в том, что вы можете повторно использовать DateInterval :

 $date = new DateTime(); //date & time of right now. (Like time()) $oneDayPeriod = new DateInterval('P1D'); //period of 1 day $date->sub($oneDayPeriod); $date->sub($oneDayPeriod); //2 days are subtracted. $date2 = new DateTime(); $date2->sub($oneDayPeriod); //can use the same period, multiple times. - $date = new DateTime(); //date & time of right now. (Like time()) $oneDayPeriod = new DateInterval('P1D'); //period of 1 day $date->sub($oneDayPeriod); $date->sub($oneDayPeriod); //2 days are subtracted. $date2 = new DateTime(); $date2->sub($oneDayPeriod); //can use the same period, multiple times. - $date = new DateTime(); //date & time of right now. (Like time()) $oneDayPeriod = new DateInterval('P1D'); //period of 1 day $date->sub($oneDayPeriod); $date->sub($oneDayPeriod); //2 days are subtracted. $date2 = new DateTime(); $date2->sub($oneDayPeriod); //can use the same period, multiple times. 

вы можете сделать это разными способами …

 echo date('Ymd H:i:s',strtotime('-24 hours')); // "i" for minutes with leading zeros 

ИЛИ

 echo date('Ymd H:i:s',strtotime('last day')); // 24 hours (1 day) 

Вывод

 2013-07-17 10:07:29 

Это может быть полезно для вас:

 //calculate like this $date = date("Ymd H:m:s", (time()-(60*60*24))); //check the date echo $date; 

это тоже должно работать

 $date = date("Ymd H:m:s", strtotime('-24 hours')); 

Вы можете просто использовать time() чтобы получить текущую time() метку.

 $date = date("Ymd H:m:s", strtotime('-24 hours', time())); 

все, что вам нужно сделать, – это изменить код

 $now = strtotime(date("Ymd H:m:s")); $date = date("Ymd H:m:s", strtotime('-24 hours', $now)); 
 $now = date("Ymd H:i:s"); $date = date("Ymd H:i:s", strtotime('-24 hours', strtotime($now))); 

Добавьте «strtotime» до $ now и Ymd H: m: s замените на Ymd H: i: s