1

我有一个日期以字符串形式返回 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 之间。

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

我在搜索本月的所有信息时也遇到了同样的问题,并且还想从星期一开始搜索本周的所有信息。

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

4

2 回答 2

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
)

*/
?>
于 2012-09-14T12:25:31.190 回答
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
}
于 2012-09-14T12:33:51.457 回答