我有以下代码:
$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...
为什么会这样?
答案 0 :(得分:50)
$date = (new \DateTime())->modify('-24 hours');
或
$date = (new \DateTime())->modify('-1 day');
(后者考虑this comment,因为它是一个有效点。)
这里应该对你有用。见http://PHP.net/datetime
$ date将是DateTime的实例,一个真实的DateTime对象。
答案 1 :(得分:30)
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.
答案 2 :(得分:10)
你可以通过多种方式做到这一点......
echo date('Y-m-d H:i:s',strtotime('-24 hours')); // "i" for minutes with leading zeros
OR
echo date('Y-m-d H:i:s',strtotime('last day')); // 24 hours (1 day)
<强>输出强>
2013-07-17 10:07:29
答案 3 :(得分:2)
这也应该有用
$date = date("Y-m-d H:m:s", strtotime('-24 hours'));
答案 4 :(得分:2)
这可能对您有所帮助:
//calculate like this
$date = date("Y-m-d H:m:s", (time()-(60*60*24)));
//check the date
echo $date;
答案 5 :(得分:1)
您只需使用time()
即可获取当前时间戳。
$date = date("Y-m-d H:m:s", strtotime('-24 hours', time()));
答案 6 :(得分:1)
$now = date("Y-m-d H:i:s");
$date = date("Y-m-d H:i:s", strtotime('-24 hours', strtotime($now)));
在$ now之前添加“strtotime”, 和Y-m-d H:m:s代替Y-m-d H:i:s
答案 7 :(得分:1)
细分或添加时间的最简单方法,
<?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;
?>
答案 8 :(得分:1)
在同一代码中使用strtotime()起作用。
$now = date("Y-m-d H:i:s");
$date = date("Y-m-d H:i:s", strtotime('-2 hours', strtotime($now)));
答案 9 :(得分:0)
您所要做的就是将代码更改为
$now = strtotime(date("Y-m-d H:m:s"));
$date = date("Y-m-d H:m:s", strtotime('-24 hours', $now));