2012-09-14 62 views
1

我有一個返回字符串的日期爲2012-03-19 05:00:32,它不是來自數據庫按日期過濾php本月和過去x天和本週

我可以使用以下搜索過去30天內

$date = '2012-03-19 05:00:32'; 
if (strtotime($date) >= strtotime('-7 days')) { 
// do something 
} 

問題是,如果今天是3月19日我是從11日搜索到18過去7天,似乎搜索最近7天通過我的搜索計算24小時* 7需要每天從00:00:01開始。

我的計劃是下破日到年,月,日,然後檢查是否年= 12,然後檢查是否一個月= 3,然後檢查日期和18

之間11

我只是想知道是否有是一個更有效的方式來做到這一點,或者如果我在正確的軌道上。

我也有同樣的問題在本月的所有信息上運行搜索,也想從本週一開始搜索本週的所有信息。

所以這只是問我的方法是否正確或者是否有更有效的方法。

+0

檢查您的時區是數據庫一樣的嗎? –

回答

0
$mytime = new DateTime('2012-03-19 05:00:32'); 
$mydate = new DateTime($mytime->format('Y-m-d')); //keep date only, exclude the time component 
$now=new DateTime; //includes hours, minutes, seconds 
$today=new DateTime($now->format('Y-m-d')); //time set to 0:00 

$interval = $mydate->diff($today); 
if($interval->format('d') <=7) { //assuming that $mydate isn't in the past 
//do something 
} 
0

我建議使用DateTime類...

<?php 
$d1=new DateTime("2012-07-08 11:14:15.638276"); 
$d2=new DateTime("2012-07-08 11:14:15.889342"); 
$diff=$d2->diff($d1); 
print_r($diff) ; 

/* returns: 

DateInterval Object 
(
    [y] => 0 
    [m] => 0 
    [d] => 0 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [invert] => 0 
    [days] => 0 
) 

*/ 
?> 
相關問題