我想从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'));
由于
答案 0 :(得分:11)
问题可能是由于date()
电话格式错误造成的。传递给date()
的第一个参数应该是格式(如Docs所示),第二个参数应该是可选的时间戳。
试试这个:
$d2 = date('c', strtotime('-30 days'));
简而言之,整个代码段可简化如下:
$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');