Как получить начальный день недели месяца в будущем году с помощью date () в php

Я использую формат 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));

Огромное спасибо

Кэмерон

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код делает это намного сложнее, чем нужно.

$dt = new DateTime('first day of +5 months')
$dt->format('N'); // "2"

Я не могу заставить это вернуть 2, вместо этого создается массив с 3 переменными: Date, timezone_type и Timezone

Cameron Ward 29.08.2018 21:02

Я не уверен, что вы имеете в виду? Я форматирую его форматом ('N') нет?

Cameron Ward 29.08.2018 21:11

$ dt - это объект, format () возвращает "2", вы должны присвоить это значение переменной ...

Devon 29.08.2018 21:14

поэтому я должен поставить после него $ start_weekday = $ dt? Извините, я все еще немного запутался, ха-ха @ Devon

Cameron Ward 29.08.2018 21:21

нет ... $starting_weekday = $dt->format('N'); это довольно просто, я думаю, вам нужно потратить немного времени на изучение языка и программирования, прежде чем что-то строить ...

Devon 29.08.2018 21:23

Другие вопросы по теме