我的日期以字符串形式返回2012-03-19 05:00:32,它不是来自数据库
我可以使用以下搜索过去30天
$date = '2012-03-19 05:00:32';
if (strtotime($date) >= strtotime('-7 days')) {
// do something
}
问题是,如果今天是3月19日,我将在过去7天内从第11天到第18天进行搜索,并且似乎通过计算24小时来搜索最近7天* 7我的搜索需要从每天00:00:01。
我的计划是将日期分为年,月和日,然后检查年份= 12,然后检查月份是否为3,然后检查日期是否在11到18之间。
我只是想知道是否有更有效的方法来做到这一点,或者我是否在正确的轨道上。
我对本月所有信息的搜索也存在同样的问题,并希望本周从周一开始搜索所有信息。
所以这只是询问我的方法是否合理或是否有更有效的方法。
答案 0 :(得分: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
)
*/
?>
答案 1 :(得分: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
}