2010-06-10 3 views
1

저는 PHP로 달력을 만들고 데이터베이스에 날짜가 있습니다. 6-10-10을 보겠습니다.반복되는 날짜 확인

때때로 반복되는 이벤트가 있습니다. 매주 반복되는 이벤트로 저장되므로 날짜가 6-10-10이고 그날 (해당 날짜 포함)마다 2 주마다 이벤트를 반복하고 있습니다. 가장 좋은 방법은 무엇입니까? 6-10-10에서 매 2 주간의 날짜?

예를 들어 날짜가 7-8-10이라고 가정 할 때 날짜가 내 기준을 충족하는지 확인하려면 어떻게해야합니까?

답변

3

루핑은 무엇입니까?! 이산 수학 101 : 숫자가 짝수인지 어떻게 알 수 있습니까? n%2==0

격주로 날짜가 (어 ...)인지 어떻게 알 수 있습니까? 에서 date%2weeks==0

토스 오프셋 당신은 유효 기간이 어느 시점에 종료한다고 가정

$startdate = strtotime("10 June 2010"); 
$otherdate = strtotime("8 July 2010"); 
$twoweeks = strtotime("+2 weeks") - time(); 
if($otherdate>$startdate && (($otherdate-$startdate)%$twoweeks)==0) { 
    // this is n * two weeks after 
} 
+0

+1, 이것은 가장 좋고 짧은 해결책입니다. –

+0

@Pekka - 개인적으로 내 루프 잽을내어 주셔서 대단히 감사합니다. :) –

+0

아무런 문제가 없었습니다. 완전히 맞았습니다. :) 사용에 달려 있습니다. 넣으려면 날짜를 생성해야합니다. 달력, 당신은 체인을 구축해야합니다. 그러나 그것이 OP가 요구했던 것이 아닙니다. –

1

캘린더 일정 인 경우 strtotime을 사용하여 유효한 날짜 체인을 만드시겠습니까?

// 10 dates every two weeks starting next thurdsay 

$valid_dates = array(); 
$date_counter = 0; 
$date_counter = strtotime("next thursday"); // I love being a lazy bastard! 

while ($i < 10) 
{ 
    array_push($valid_dates, $date_counter); 
    $date_counter = strtotime("+2 weeks", $date_counter); 
    $i++; 

} 

foreach ($valid_dates as $date) 
echo date("Y/m/d", $date)."<br>"; 

윌 출력 :

2010/06/17 
2010/07/01 
2010/07/15 
2010/07/29 
2010/08/12 
2010/08/26 
2010/09/09 
2010/09/23 
2010/10/07 
2010/10/21 
+0

(date-startdate)%2weeks를 얻을. 내 유효 날짜가 미래에 무한대로 변경되는 경우 (예 : 2 주마다 반복하여 반복 설정하는 경우) – kylex

+0

@kylex 예, 주어진 날짜 수의 접근 방식입니다. DATEDIFF 접근법은이 특정 작업에 대해 더 쉽게 보입니다. "매달 셋째 주 목요일"과 같이 더 복잡 해지더라도'strftime'과 같은 것이 필요할지도 모릅니다. –

1

당신은 DATEDIFF 기능을 사용할 수 있습니다. 예를

를 들어

SELECT * FROM myTable WHERE (DATEDIFF(myDate, '2007-12-30') % 14) = 0 
0

MySQL의에서 DATEDIFF 기능의 결과를 안하는 등 (격주 반복 이벤트의 경우) (매주 반복 이벤트) (7)의 복수, 또는 14 일?