Frage

Ich bin ein Kalender in PHP erstellen und in der Datenbank ein Datum haben, lassen Sie sich 6-10-10 sagen.

Manchmal Ereignisse habe ich wiederholen, gespeichert als wöchentlich wiederholen, so dass, wenn das Datum 6-10-10 ist, und ich wiederhole ein Ereignis alle zwei Wochen ab dem Tag (einschließlich dieses Tages), was ist der beste Weg, Termine zu finden alle zwei Wochen ab 6-10-10?

Zum Beispiel, sagen wir mal das Datum 7-8-10 ist, wie kann ich das Datum erfüllt meine Kriterien prüfen, zu?

War es hilfreich?

Lösung

Was ist mit dem Looping up ?! Diskrete Mathematik 101: Wie Sie herausfinden, ob eine Zahl gerade ist? n%2==0

Wie Sie herausfinden, ob ein Datum ist (uh ...) alle zwei Wochen? date%2weeks==0

Toss in einem Offset und Sie erhalten (date-startdate)%2weeks

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

Andere Tipps

Sie können mit DATEDIFF Funktion.

Zum Beispiel

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

Wenn dies für einen Kalender ist, wie etwa eine Kette von gültigen Daten Aufbau strtotime mit?

// 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>";

Will Ausgabe:

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

Should führen nicht der DATEDIFF Funktion in MySQL ein Vielfaches von 7 (für Veranstaltungen pro Woche Wiederholung) sein, oder 14 (für Veranstaltungen alle zwei Wochen zu wiederholen) etc?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top