如何在PHP中从日期时间对象中减去24小时
我有以下代码:
$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...
这是为什么呢?
我有以下代码:
$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...
这是为什么呢?
$date = (new \DateTime())->modify('-24 hours');
或
$date = (new \DateTime())->modify('-1 day');
(后者考虑了这一评论,因为它是一个有效的观点。
在这里应该可以正常工作。查看 http://PHP.net/datetime
$date将是 DateTime 的一个实例,一个真正的 DateTime 对象。
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.
在PHP中处理DateTimes的最流行的库是Carbon。
在这里,您只需执行以下操作:
$yesterday = Carbon::now()->subDay();