【发布时间】:2009-06-05 22:02:05
【问题描述】:
我有一个“活动”需要安排在每个月的同一天。
假设您将开始日期设置为 5 月 1 日,您应该在 6 月 1 日、7 月 1 日等获得下一个事件。问题在于 31 日的开始日期(下一个可能是 30 或 28,具体取决于月)。
考虑到根据月份和年份的不同,月份的天数(28、30、31)不同......有什么简单的设置方法?
考虑以下(有缺陷的)下个月函数:
$events = array()
function nextmonth($date) {
return $date+(60*60*24*30);
}
$curr = $start;
while($curr < $end) {
$events[ = $curr;
$curr = nextmonth($curr);
}
编辑添加:对我来说,问题很简单,就是如何解决任何给定月份的天数,从而得到下一个对应的日期。
【问题讨论】:
-
请更好地格式化代码,谢谢!
-
我不是 PHP 开发人员,所以只需添加一些上下文,如果指定的日期不是该月的有效日期,Outlook 默认使用该月的最后一天。您需要考虑周末和节假日吗?
-
有 uk.php.net/cal_days_in_month 或 date('t') - 但我认为实际问题是当用户在 31 日进行活动时该怎么做,这完全取决于事件的内容。
-
这家伙有一个很好的答案:midwesternmac.com/blogs/jeff-geerling/php-calculating-monthly。不确定它在性能方面有多好,但可以满足您的描述 - 希望它可以帮助找到此页面的任何其他人。