我正在尝试找出执行以下操作的最佳方法:
如果用户选择某一天,例如 2010 年 6 月 21 日,我们将在每个月的第三个星期一重复一次事件,但如果他们选择 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() 函数,我已经花了不少时间了。特别是确定第一周和最后一周。
最佳答案
看看 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
关于php - MySQL/PHP 确定一天位于哪一周以供日历使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112723/