MySQL / PHP, который определяет, на какой неделе день находится для использования календаря - PullRequest
1 голос
/ 24 июня 2010

Я пытаюсь найти лучший способ сделать следующее:

Если пользователь выберет определенный день, скажем, 21 июня 2010 года, мы будем повторять событие каждый третий понедельник каждого месяца, ноесли они выберут 28 июня 2010 года, мероприятие будет повторяться каждый последний понедельник каждого месяца.Вот как это делает календарь Google, и я пытаюсь повторить эту функцию.

Итак, в основном я вижу, что это работает примерно так: учитывая дату, получите неделю, в которой она существует, и день, когда она включена.(1-я неделя, 2-я неделя, 3-я неделя, 4-я неделя и последняя неделя.) Очевидно, иногда 4-я неделя будет последней неделей, и в этом случае я бы хотел по умолчанию установить значение на прошлой неделе.

так в psuedocode:

$repeatweek = getweeknumber($date);
$repeatday = date('l', strtotime($date));


$todaysweek = getweeknumber($todaysdate);
$todayday =  date('l', strtotime($todaysdate));

if($todayday == $repeatday && $repeatweek == $todaysweek){
    echo "This is the day";
}

Итак, я думаю, хитрость заключается в том, чтобы правильно определить функцию getweeknumber (), с которой у меня много времени.Особенно определяя первую и последнюю недели.

1 Ответ

0 голосов
/ 24 июня 2010

Посмотрите на DatePeriod класс .

Пример:

<?php
$start = new DateTime("June 21, 2010");
$end = new DateTime("December 31, 2010");

$interval = DateInterval::createFromDateString('fourth monday of next month');
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

foreach ($period as $p) {
    echo $p->format("Y-m-d"), "\n";
}

дает

2010-07-26
2010-08-23
2010-09-27
2010-10-25
2010-11-22
2010-12-27
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...