Я использую формат date (), чтобы вернуть начальный день недели месяца. Код, который у меня ниже, показывает, как я пытаюсь этого добиться. В текущем году (2018) это работает в обычном режиме. Например, в этом месяце август, а начальный будний день - среда, поэтому он вернет 3 для среды. (Пока работает)
По мере того, как мы приближаемся к 2019 году, начальный день недели начинает меняться неправильно. Например, январь 2019 начинается со вторника, поэтому он должен вернуть 2, но вернуть 1. (один день отсутствует).
Эта ошибка кажется кумулятивной, поэтому, если мы перейдем к 2020 году, это будет 2 дня и т. д. Я так старался правильно отформатировать эту Date (), но безрезультатно. Это вообще правильный способ сделать это?
Код:
$future_month = 5 /*for January 2019*/
$starting_weekday = date('N',mktime(0, 0, 0, date('m', strtotime('+'.$future_month.' months', strtotime(date('Y-m-01')))), 1));
Огромное спасибо
Кэмерон






Ваш код делает это намного сложнее, чем нужно.
$dt = new DateTime('first day of +5 months')
$dt->format('N'); // "2"
Я не уверен, что вы имеете в виду? Я форматирую его форматом ('N') нет?
$ dt - это объект, format () возвращает "2", вы должны присвоить это значение переменной ...
поэтому я должен поставить после него $ start_weekday = $ dt? Извините, я все еще немного запутался, ха-ха @ Devon
нет ... $starting_weekday = $dt->format('N'); это довольно просто, я думаю, вам нужно потратить немного времени на изучение языка и программирования, прежде чем что-то строить ...
Я не могу заставить это вернуть 2, вместо этого создается массив с 3 переменными: Date, timezone_type и Timezone