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

时间:2013-07-18 08:14:37

标签: php datetime

我有以下代码:

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

为什么会这样?

10 个答案:

答案 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));