获得30天的回溯日期和时间

时间:2014-09-25 17:41:25

标签: php date datetime datetime-format

我想从PHP(从例如30 8月14日23:06)到30天(例如1 8月14日23:06)计算PHP中过去30天的时间段。我写了这个当前日期时间在$ d1和过去30天的日期时间在$ d2,但不知何故我没有得到正确的结果。有什么想法吗?

$url=$row["url"];
$pageid=getPageID($url);
$date=date('y-m-d g:i');
$d1=strtotime($date);
$d2=date(strtotime('today - 30 days'));

由于

8 个答案:

答案 0 :(得分:11)

问题可能是由于date()电话格式错误造成的。传递给date()的第一个参数应该是格式(如Docs所示),第二个参数应该是可选的时间戳。

试试这个:

$d2 = date('c', strtotime('-30 days'));

PHPFiddle


简而言之,整个代码段可简化如下:

$url = $row["url"];
$pageid = getPageID($url);
$date = date('y-m-d g:i');
$d1 = time();
$d2 = date('y-m-d g:i', strtotime('-30 days'));

答案 1 :(得分:4)

您还可以将DateTime班级sub()方法与DateInterval一起使用:

$now = new DateTime();
$back = $now->sub(DateInterval::createFromDateString('30 days'));
echo $back->format('y-m-d g:i');

答案 2 :(得分:2)

如果您想在2014-08-01退出,请尝试以下代码。谢谢

$date = '2014-08-30 23:06';
$new_date = date('Y-m-d G:i', strtotime($date.' - 29 days'));
echo "30 days back is " . $new_date;

答案 3 :(得分:1)

我知道你用PHP说过,然而,我无法想象没有从数据库中获取记录。如果您想从数据库中执行此操作,请使用:

$sql='SELECT * FROM myTable WHERE  date > CURRENT_DATE - INTERVAL 30 DAY';
$pdo->query($sql);

答案 4 :(得分:1)

根据您的简要说明和示例,我相信您希望日期为30天,时间与现在相同。以下代码将用于此目的。感谢。

<?php
$date=date('y-m-d g:i');
$time=date('g:i');
echo "Todays date:" . $date. "<br>";
$d2 = date('y-m-d', strtotime('-30 days'));
echo "30 days back:" . $d2 . ' ' .$time;
?>

答案 5 :(得分:1)

Try:
echo date("Y-m-d h:i:s",strtotime('-30 days'));

有关详细信息,请click

答案 6 :(得分:0)

非常简单的两行代码 $date = new DateTime(); echo $date->modify('-30 day')->format('y-m-d g:i');

答案 7 :(得分:0)

非常简单的一行代码:

echo (new DateTime())->modify('-30 day')->format('y-m-d g:i');

在下面的示例中,如果变量 $ date 不是 在其他任何地方都用过!

$date = new DateTime();
echo $date->modify('-30 day')->format('y-m-d g:i');