У меня есть следующий код:
$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