星期几至指定日期

时间:2019-03-28 11:10:24

标签: php date strtotime

我正在计算阿根廷的国家主权日,该纪念日是最接近11月20日的星期一。

我试图在此处找到PHP解决方案,但只是找到了Ruby解决方案:Get the closest date of a specific week day

如何为PHP实现此功能?

2 个答案:

答案 0 :(得分:2)

使用$date->format("N"),您将获得工作日的数字表示形式(周一至周日为1-7)。如果大于4,大于周四,请选择下一个星期一。如果没有,那就是前一个星期一。

如果为$date->format("N") === 1,则为提供的日期,我们不需要任何修改。

$date = new DateTime("November 20th");
$dayOfWeek = $date->format("N");
if ($dayOfWeek > 1) {
    $date->modify($dayOfWeek > 4 ? 'next monday' : 'previous monday');
}
echo $date->format("Y-m-d");

答案 1 :(得分:1)

可以尝试这样的事情:

<?php

function getSovDay($year)
{
    $date = new \DateTime($year."-11-20");
    $weekDay = $date->format("N");
    if ($weekDay == 1)
    {
        return $date;
    } elseif ($weekDay <= 4) {
        return $date->modify("previous monday");
    } else {
        return $date->modify("next monday");
    }
}

for($i = 2000; $i <= 2200; $i++)
{
    echo getSovDay($i)->format("Y-m-d")."\n";
}