Получение первого дня месяца, вывод неправильного первого дня месяца - PullRequest
0 голосов
/ 31 мая 2019

Я хочу отобразить первый день месяца в формате «день недели». Например, приведенный ниже код должен выбрать месяц август и сказать, что день недели 01 выпадает на четверг, но по какой-то причине приведенный ниже код выводит пятницу, что неверно, в некоторые месяцы, например, май, правильно говорит среда .

$monthNumber = 3;
$base = strtotime(date('Y-m',time()) . '-01 00:00:01');
$dateTest = date("Ym" . 1, strtotime($monthNumber . " month", $base));
$unixTimestamp = strtotime($dateTest, $base);
echo date("l", $unixTimestamp);

У кого-нибудь есть идеи, чтобы показать правильный день?

$ base исправляет ошибку, при которой не отображается правильный месяц.

Ответы [ 3 ]

3 голосов
/ 31 мая 2019

А почему бы вам не использовать dateTime?

echo (new \DateTime('first day of august 2019'))->format('l');

Подробнее о Относительные форматы .

0 голосов
/ 01 июня 2019

Чтобы получить день недели, приходящийся на первый день любого месяца, вы можете использовать префикс first day of, например.

echo (new \DateTime('first day of August'))->format('l');

Это будет правильно показывать четверг на август 2019 года.

Если вы хотите сделать это динамически, используя числа в течение нескольких месяцев, вы можете создать фиктивную дату, как вы пытались это сделать.

$timeString = sprintf('01.%02d.%04d', 8, 2019); // replace the numbers with your variables
echo (new \DateTime($timeString))->format('l');
0 голосов
/ 31 мая 2019

Сначала вы должны использовать date ():

$base = date('Y-m',time()) . '-01 00:00:00';

И не должны устанавливать первую секунду:)

...