Получите первую или последнюю пятницу в месяце - PullRequest
11 голосов
/ 29 мая 2009

Я пытаюсь написать функцию календаря, как это

function get_date($month, $year, $week, $day, $direction)
{
    ....
}

$week - это целое число (1, 2, 3 ...), $ day - это день (Sun, Mon, ...) или число, что проще Направление немного сбивает с толку, потому что это делает другой расчет.

Для примера давайте назовем

get_date(5, 2009, 1, 'Sun', 'forward');

Он использует значение по умолчанию и получает первое воскресенье мая, т.е. 2009-05-03. Если мы позвоним

get_date(5, 2009, 2, 'Sun', 'backward');

возвращает второе последнее воскресенье мая, т. Е. 2009-05-24.

Ответы [ 12 ]

0 голосов
/ 20 ноября 2015

То же самое можно сделать очень элегантно, используя класс DateTime.

$time_zone = new DateTimeZone('Europe/Ljubljana');

$first_friday_of_this_month = new DateTime('first Friday of this month', $time_zone);
$last_friday_of_this_month = new DateTime('last Friday of this month', $time_zone);

echo $first_friday_of_this_month->format('Y-m-d');  # 2015-11-06
echo $last_friday_of_this_month->format('Y-m-d');  # 2015-11-27
0 голосов
/ 29 мая 2009

Просто выясните, каков первый и последний день рассматриваемого месяца (т.е. 1 мая 2009 года - пятница, а 31 мая 2009 года - воскресенье). Я полагаю, что большинство функций PHP используют Monday = 0, Sunday = 6, поэтому пятница = 4, так что вы знаете, что воскресенье (6) - пятница (4) = 2, затем 31-2 = 29, что означает, что последняя пятница этого месяца - 29-е. Для первой пятницы, если число отрицательное, добавьте 7, если число равно 0, месяц начнется в пятницу.

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