Функция php date () не дает мне правильного года

echo date("Y", strtotime('2019-W01'));

Это должно дать мне «2019», верно?

Нет, это дает «2018».

Когда он является

echo date("Y", strtotime('2019-W02'));

На этот раз это даёт «2019», верно.

Я полагаю, это ошибка или есть что-то, чего я не знаю?

(часовой пояс по умолчанию UTC при тестировании этого)

0

Решение

Это не ошибка, это работает, как ожидалось. echo $date->format('Y'); возвращает 2018, потому что первый неделя 2019 это день 2018-12-31. Посмотрим когда попробую с форматом Y-m-d например echo date("Y-m-d", strtotime('2019-W01')); это возвращается 2018-12-31 и для echo date("Y", strtotime('2019-W01')); это возвращается 2019 потому что это так 2019-01-07, Давай попробуем это echo date("Y-m-d", strtotime('2019-W02'));

<?php
$date= new \DateTime('2019-W01');
echo $date->format('Y');
echo PHP_EOL;
echo $date->format('Y-m-d');
//echo date("Y", strtotime('2019-W01'));
?>

DEMO: https://3v4l.org/GsF1t

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector