[英]MySQL/PHP that determines which week a day resides on for calendar use
我正在尝试找出执行以下操作的最佳方法:
如果用户选择某天,例如2010年6月21日,我们将在每个月的第3个星期一重复一次活动,但如果用户选择2010年6月28日,则该事件将在每个月的最后一个星期一重复一次。 这就是Google日历的工作方式,我正在尝试重复该功能。
因此,基本上,我看到它的工作原理是这样的:给定日期,获取它存在的星期和日期。 (第1周,第2周,第3周,第4周和最后一周。)显然,有时第4周将是最后一周,如果是这样的话,我想默认为上周。
所以在psuedocode中:
$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
类 。
例:
<?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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.