我需要在PHP中编写一些代码,这些代码仅在交替的几周内执行操作,基于星期几(星期一,星期二等)而不是数字(1号,7号等)。
所以在星期一开始的一个周期中,它应该运行一周,然后不运行一周。
我确信这一定比我想象的要容易,但似乎无法解决,所以请帮忙!
答案 0 :(得分:7)
你可以简单地拿一周的数字,并在奇数(甚至!)时执行你的行动,如果这一天是星期一,例如:
$time=time();
$dayNo=strftime('%u', $time); #1=monday
$weekNo=strftime('%U', $time); #week number
if (($dayNo==1) && ($weekNo%2))
{
#do something on mondays, alternating weeks
}
答案 1 :(得分:1)
虽然保罗迪克森钉了它,如果你是在一个班轮之后,你可以简单地做......
if(date('W') % 2) {
// Will only execute on alternate weeks.
}
答案 2 :(得分:0)
要记住的是strtotime()
函数非常强大,可以为您提供the second Sunday in March ("Second Sunday March 0"
)等模糊信息。
例如,要查找标记本月第二周的星期日:
<?php
$month = time();
// Calculate the first day of the month contained in the $month timestamp
$first_day = strtotime(
date(
'Y-m-1 00:00:00',
$month
)
);
// Calculate the sunday opening the week that contains the first day
// of the month (e.g. August 30th, 2009 is the Sunday that corresponds
// to September 1st, 2009)
$pseudo_first_sunday = strtotime(
'First Sunday',
strtotime(
'-1 Week',
$first_day
)
);
var_dump(date( 'Y-m-d', strtotime('Second Week', $pseudo_first_sunday) ));
此脚本的输出将是(截至2009-9-14):
string(10) "2009-09-06"
这是9月的第二周(但不是第二周,如果你想要替换$first_day
进入$pseudo_first_sunday
)。
在PHP中使用日期时,请记住一些事项。