MySQL / PHP,用于确定每天使用哪一周进行日历使用

时间:2010-06-24 18:13:07

标签: php mysql date

我正在尝试找出执行以下操作的最佳方法:

如果用户选择某一天,比如2010年6月21日,我们将每个月的第3个星期一重复一次活动,但如果他们选择2010年6月28日,那么活动将在每个月的每个最后一个星期一重复。谷歌日历就是这样做的,我正在尝试重复这个功能。

所以基本上我看到它的工作方式如下: 给定一个日期,获取它存在的那一周,以及它所在的那一天。 (第1周,第2周,第3周,第4周和上周。)显然有时第4周将是最后一周,如果是这种情况,我希望默认为上周。

所以在伪代码中:

$repeatweek = getweeknumber($date);
$repeatday = date('l', strtotime($date));


$todaysweek = getweeknumber($todaysdate);
$todayday =  date('l', strtotime($todaysdate));

if($todayday == $repeatday && $repeatweek == $todaysweek){
    echo "This is the day";
}

所以我猜的诀窍是正确定义getweeknumber()函数,我有点时间了。特别是确定第一周和最后一周。

1 个答案:

答案 0 :(得分:0)

查看DatePeriod class

示例:

<?php
$start = new DateTime("June 21, 2010");
$end = new DateTime("December 31, 2010");

$interval = DateInterval::createFromDateString('fourth monday of next month');
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

foreach ($period as $p) {
    echo $p->format("Y-m-d"), "\n";
}

给出

2010-07-26
2010-08-23
2010-09-27
2010-10-25
2010-11-22
2010-12-27