如何在PHP中从日期时间对象中减去24小时

2022-08-30 11:34:00

我有以下代码:

  $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...

这是为什么呢?


答案 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.

我建议使用日期时间库,因为它是一种更加面向对象的方法。

$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.

碳(2020年更新)

在PHP中处理DateTimes的最流行的库是Carbon

在这里,您只需执行以下操作:

$yesterday = Carbon::now()->subDay();

推荐