PHP获得明年同一周的同一天

Leg*_*ade 3 php datetime date

我正在研究客户调度程序,我的雇主希望它每年自动重新安排客户.他希望他们每年保持同一周的同一天.

例如,客户定于2014年5月23日.这是5月的第四个周五.2014年5月23日过后,应预订2015年5月4日的预约(在本案例中为第22次).

我已经尝试了各种各样的方法来使这个工作(例如使用DateTime提前一年,并找到一周中任何一天的"之前").但是,我尝试过的每一款车型在短短几年后都会出现故障.他们最终会像......这个月的第二个星期五.

有没有人有办法让这个工作?我的雇主非常具体地希望调度程序以这种方式工作.xx如果有人知道如何,我真的很感激帮助.

感谢您阅读本文!

vas*_*ite 6

正如已经指出的那样,例如,可能没有6月的第5个星期五,所以需要一些标准的方法来决定明年哪一周与当前星期相同.

实际上,ISO 8601中已有一个用于周编号的标准,PHP的DateTime类内置了处理它们的功能.

我的建议是ISO 8601 week number在下一年的同一天安排下一次会议.以下功能将为您完成: -

/**
 * @param \DateTime $date Date of the original meeting
 * @return \DateTime Date of the next meeting
 */
function getSameDayNextYear(\DateTime $date = null)
{
    if(!$date){
        $date = new \DateTime();
    }
    return (new \DateTime())->setISODate((int)$date->format('o') + 1, (int)$date->format('W'), (int)$date->format('N'));
}
Run Code Online (Sandbox Code Playgroud)

看到它使用一些测试代码.

我相信你会同意这是最简单的方法,它应该会在接下来的100年或更长时间内看到你的权利:)

参考日期时间日期的格式.

  • +1,这个答案不像其他人那样容易受到影响(比如...我的).也就是说,它将始终是一年中的同一时间,而"+1年和下一个匹配的工作日"和"+1年和最接近的匹配工作日"(我的两个答案)将慢慢蠕动到结束和开始分别是这一年. (2认同)