PHP, чередующаяся неделя логика - PullRequest
1 голос
/ 14 сентября 2009

Мне нужно написать код на PHP, который выполняет действие только в чередующиеся недели, основываясь на дне недели (понедельник, вторник и т. Д.), А не на количестве (1-й, 7-й и т. Д.).

Таким образом, в цикле, начинающемся в понедельник, он должен продолжаться одну неделю, а не следующую.

Я уверен, что это должно быть проще, чем я думаю, но, похоже, не получается, поэтому помогите, пожалуйста!

Ответы [ 3 ]

7 голосов
/ 14 сентября 2009

Вы можете просто взять номер недели и выполнить свое действие, если оно нечетное (или даже!), Если день является понедельником, например:

$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 голос
/ 14 сентября 2009

Пока Пол Диксон прибил его, если вы ищете один лайнер, вы можете просто сделать ...

if(date('W') % 2) {
// Will only execute on alternate weeks.

}
0 голосов
/ 14 сентября 2009

Следует помнить, что функция strtotime() очень надежна и может дать вам нечеткую информацию, такую ​​как во второе воскресенье марта ("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"

Это вторая неделя сентября (но не вторая ПОЛНАЯ неделя, если вы хотите заменить $first_day на $pseudo_first_sunday).

Просто нужно иметь в виду, когда вы играете с датами в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...