2014-09-25 145 views
3

我想从现在(例如30 Aug 14 23:06)到30天后(例如1 Aug 14 23:06)计算出在过去30天的时间段。我在当前日期时间写入$ d1和过去30天时间写入日期时间写入$ d2,但不知何故,我没有得到正确的结果。任何想法?获取30天的日期和时间

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

感谢

+0

你得到什么样的结果? – Mike 2014-09-25 17:43:38

+0

你使用MySQL来获取你的记录? – user1032531 2014-09-25 17:44:18

+3

'strtotime(' - 30天')'应该就够了。 – BenM 2014-09-25 17:44:39

回答

5

的问题可能是由畸形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')); 
+0

Thanks ... $ d2 = date('y-m-d g:i',strtotime(' - 30 days'));这就是我一直在寻找的东西,但是在语法上起了很大的作用。 – 2014-09-25 18:36:59

2

您还可以使用DateTime类的sub()方法连同DateInterval

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

非常感谢你 – 2014-09-25 18:37:43

+0

@MumbaiCabinCrew不客气! :) – hek2mgl 2014-09-25 20:38:05

1

我知道你用PHP说过,但是,我无法想象没有从数据库中获取记录。如果你想从数据库为此,请使用:

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

非常感谢。它是一个附加信息:) – 2014-09-25 18:38:44

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; 
?> 
+0

非常感谢 – 2014-09-25 18:38:27

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; 
0
Try: 
echo date("Y-m-d h:i:s",strtotime('-30 days')); 

因为在这里更详细click

相关问题