我有以下代码:
$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.
不过,我建议使用 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.
在 PHP 中处理 DateTimes 的最流行的库是Carbon。
在这里,您只需执行以下操作:
$yesterday = Carbon::now()->subDay();
你可以通过多种方式做到这一点......
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
最简单的方式来减少或增加时间,
<?php
**#Subtract 24 hours**
$dtSub = new DateTime('- 24 hours');
var_dump($dtSub->format('Y-m-d H:m:s'));
**#Add 24 hours**
$dtAdd = new DateTime('24 hours');
var_dump($dtAdd->format('Y-m-d H:m:s'));die;
?>
这可能对您有帮助:
//calculate like this
$date = date("Y-m-d H:m:s", (time()-(60*60*24)));
//check the date
echo $date;
这也应该有效
$date = date("Y-m-d H:m:s", strtotime('-24 hours'));
$now = date("Y-m-d H:i:s");
$date = date("Y-m-d H:i:s", strtotime('-24 hours', strtotime($now)));
在 $now 之前添加“strtotime”,并将 Ymd H:m:s 替换为 Ymd H:i:s
您可以简单地使用time()
来获取当前时间戳。
$date = date("Y-m-d H:m:s", strtotime('-24 hours', time()));
在相同的代码中使用 strtotime() 它的工作。
$now = date("Y-m-d H:i:s");
$date = date("Y-m-d H:i:s", strtotime('-2 hours', strtotime($now)));
您所要做的就是将您的代码更改为
$now = strtotime(date("Y-m-d H:m:s"));
$date = date("Y-m-d H:m:s", strtotime('-24 hours', $now));