1

我正在用 PHP 创建一个日历,并且在数据库中有一个日期,比如说 6-10-10。

有时我有重复事件,存储为每周重复,所以如果日期是 6-10-10,并且我从那天(包括那一天)开始每两周重复一次事件,那么找到每两个日期的最佳方法是什么从 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(对于每两周重复的事件)等?

于 2010-06-10T21:58:55.327 回答