diff --git a/date/calendar.php b/date/calendar.php index 39794fd..a6c67ba 100644 --- a/date/calendar.php +++ b/date/calendar.php @@ -7,7 +7,14 @@ function makeCal(int $year, int $month) : array { // Получаем номер дня недели для 1 числа месяца. - $wday = date('N'); + // Если необязательный параметр timestamp функции date(string $format, ?int $timestamp = null): string не указан, + // то date('N') выводит не номер дня недели для 1 числа, а для текущего дня, когда делается выполнение сценария + // Поэтому для корректного представления календаря нужно добавить вторым параметром mktime(0, 0, 0, $month, 1, $year) + // Тогда makeCal будет выводить корректный календарь именно за текущий месяц + // Такая же неточность есть в книге/репозитории PHP7 + // PS - возможно я не прав, и на момент издания книг функция date работала по другому))) + + $wday = date('N', mktime(0, 0, 0, $month, 1, $year)); // Начинаем с этого числа в месяце (если меньше нуля // или больше длины месяца, тогда в календаре будет пропуск). $n = - ($wday - 2);