计算当月第四个星期六的日期

时间:2009-02-13 16:36:43

标签: php datetime date

有点担心如何去做这件事。鉴于当月,我需要返回每个月的第四个星期六的日期。

e.g。本月将是2月20日,接下来将是3月27日。

由于

6 个答案:

答案 0 :(得分:7)

我不是PHP程序员,但是,看起来strtotime就是你所追求的。

你可以使用strtotime(“第四个星期六”),它将在第四个星期六返回。

查看strtotime文档。

编辑:

感谢汤姆和保罗迪克森,让答案完整。

date('dS F',strtotime('Fourth Saturday '.date('F o'))); 

答案 1 :(得分:7)

您可以根据开始日期使用strtotime查找“下周六”。如果该开始日期是在最早可能的前一天(21日)之前的那一天,我们得到答案......

//required year/month
$yyyymm="2009-01";

//find next saturday after earliest possible date
$t=strtotime("next saturday", strtotime("{$yyyymm}-21"));

//here you go!
echo "4th saturday of $yyyymm is ".strftime("%Y-%m-%d",$t)."\n";

任何一个月中最早可能的第4天重复是第22次(1,8,15,22),最后可能的第4次重复是第28次(7,14,21,28)。

编辑:虽然文档中不清楚,但您也可以请求“第四个星期六” - 使用当月的第0天作为依据:

$t=strtotime("fourth saturday", strtotime("{$yyyymm}-00"));

或省略基准时间并直接指定月份和年份:

$t=strtotime("fourth saturday feb 2009");

对Robin的提示“我不是PHP编码员”发现的日子:)

答案 2 :(得分:3)

第四个星期六的最早日期是本月22日。所以看看第22天,看看它是星期几,如果不是星期六,加上一天到日期,再检查一下,直到找到匹配(最多你需要检查的是6天)。

答案 3 :(得分:2)

找到该月的第一个星期六,然后再添加三周。

如果您不知道第一个星期六的时间(或者更确切地说,不知道与日期名称相对应的日期),您可能需要查看Doomsday algorithm,我方便地查看在另一个有类似问题的帖子。

答案 4 :(得分:0)

function fourth_saturday($year, $month)
{
    $info = localtime(mktime(0, 0, 0, $month , 1, $year));
    return 28 - $info[6];
}

答案 5 :(得分:-1)

用PHP而不是伪代码(想要5.2)

$date = getdate();
$date-> setDate($date->format('Y'), $date->format('Y'), '1');   // 1st of month.  
while ($date->format('w' != 6)
    $date->modify("+1 day");
$date->modify("+21 day"); // date is now on the fourth saturday