有点担心如何去做这件事。鉴于当月,我需要返回每个月的第四个星期六的日期。
e.g。本月将是2月20日,接下来将是3月27日。
由于
答案 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