2012-09-14 4 views
1

나는 그것의 데이터베이스에서 오지 않아, 2012-03-19 5시 0분 32초 같은 문자열에 반환하는 날짜가필터링

내가 할 수있는

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

문제는 오늘 19 3 월인 경우입니다 지난 30 일 동안 검색하려면 아래 사용, 나는 지난 7 일 동안 18에 11에서 검색 할 수 있었고 그 지난 7 일 검색 보인다 내 검색으로 24 시간 * 7을 계산하면 매일 00:00:01부터 시작해야합니다.

내 계획은 날짜

(11) 사이에 18 임 그냥 궁금 경우 월 = 3, 다음 선택하면 년 = 12, 다음 선택하면 다음 확인 년, 월, 일에 아래로 날짜를 깰 거기 이 작업을 수행하는보다 효율적인 방법입니다.

이번 달의 모든 정보에 대해 검색을 실행하는 것과 동일한 문제가 있으며 이번 주부터 모든 정보를 검색하고 싶습니다.

내 방법이 건전한 방법인지 아니면 더 효율적인 방법인지 묻는 것입니다.

+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 
) 

*/ 
?>