setISODate работать таким образом?

Я проверяю эти случаи:

$date = new \DateTime();
echo($date->format('Y.m.d')) . PHP_EOL;

$date->setISODate(2018, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;

$date->setISODate(2019, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;

$date->setISODate(2020, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;

Ouput:

2017.08.17
2018.01.01
2018.12.31
2019.12.30

Я понял, что это покажет это:

2017.08.17
2018.01.01
2019.01.01
2020.01.01

Почему это происходит?

Конечно, есть кое-что, что я не совсем понял.

1

Решение

Аргументы year, week, dayofweek, Неделя PHP начинается в понедельник, а первая неделя года — это первая неделя, на которую в январе уходит не менее 4 дней.

В 2018 году год начинается в понедельник, поэтому 1-я неделя начинается 1 января, а это 1-й день недели.

В 2019 году год начинается во вторник, поэтому первая неделя начинается в понедельник, 31 декабря 2018 года, и это первый день недели.

В 2020 году год начинается в среду, поэтому неделя 1 начинается в понедельник, 30 декабря 2019 года, то есть это первый день недели.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]