PHP,交替周逻辑

时间:2009-09-14 10:38:09

标签: php

我需要在PHP中编写一些代码,这些代码仅在交替的几周内执行操作,基于星期几(星期一,星期二等)而不是数字(1号,7号等)。

所以在星期一开始的一个周期中,它应该运行一周,然后不运行一周。

我确信这一定比我想象的要容易,但似乎无法解决,所以请帮忙!

3 个答案:

答案 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中使用日期时,请记住一些事项。