Подтвердить что ты не робот

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

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

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

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

A non well formed numeric value encountered in...

почему это?

4b9b3361

Ответ 1

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

или

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

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

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

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

Ответ 2

strtotime() ожидает отметку времени unix (которая равна number seconds since Jan 01 1970)

$date = date("Y-m-d 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.

Ответ 3

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

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

ИЛИ

echo date('Y-m-d H:i:s',strtotime('last day')); // 24 hours (1 day)

Выход

2013-07-17 10:07:29

Ответ 4

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

//calculate like this
$date = date("Y-m-d H:m:s", (time()-(60*60*24)));

//check the date
echo $date;

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

Добавьте "strtotime" до $now, и Y-m-d H: m: s заменить на Y-m-d H: i: s