按日期过滤本月、过去x天和本周的php


filtering by date php for this month and last x days and this week

我有一个日期以字符串形式返回2012-03-19 05:00:32,它不是来自数据库

我可以使用以下内容搜索最近30天的

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

问题是,如果今天是3月19日,我要从11日到18日搜索过去的7天,这似乎是通过计算24小时来搜索过去7天*7,我的搜索需要从每天00:00:01开始。

我的计划是将日期分解为年、月和日,然后检查年是否为12,然后检查月是否为3,然后检查日期是否在11到18之间。

我只是想知道是否有更有效的方法来做到这一点,或者我是否走在了正确的轨道上。

我也有同样的问题,从本月开始搜索所有信息,还想从周一开始搜索本周的所有信息。

所以这只是在问我的方法是否合理,或者是否有更有效的方法。

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

我建议使用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
)
*/
?>