1

PHP でカレンダーを作成していますが、データベースには日付があります。たとえば、6-10-10 としましょう。

毎週の繰り返しとして保存されている繰り返しイベントがある場合があります。そのため、日付が 6-10-10 で、その日 (その日を含む) から 2 週間ごとにイベントを繰り返している場合、2 週間ごとの日付を見つける最良の方法は何ですか? 6-10-10 週間?

たとえば、日付が 7-8-10 であるとします。その日付が基準を満たしていることを確認するにはどうすればよいですか?

4

4 に答える 4

3

ループしてどうしたの!? 離散数学 101: 数値が偶数かどうかはどうやってわかりますか?n%2==0

日付が (うーん...) 隔週かどうかはどうやってわかりますか?date%2weeks==0

オフセットを投げると、(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
}
于 2010-06-10T21:59:50.757 に答える
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
于 2010-06-10T21:56:28.113 に答える
1

DATEDIFF関数を使用できます。

例えば

SELECT * FROM myTable WHERE ( DATEDIFF( myDate,  '2007-12-30' ) % 14 ) = 0
于 2010-06-10T21:57:33.927 に答える
0

MySQL のDATEDIFF関数の結果は、7 の倍数 (毎週繰り返されるイベントの場合) または 14 (2 週間ごとに繰り返されるイベントの場合) などになるべきではありませんか?

于 2010-06-10T21:58:55.327 に答える