#php #time #php-5.6
#php #datetime
Вопрос:
Я пытаюсь получить год и неделю года от заданной даты в моем коде:
$dueDate->format('W , Y');
В приведенном выше коде duedate — это объект datetime с этим значением даты:
December 31, 2018
Когда я вывожу формат, который я указал выше, я получаю это:
01 , 2018
При рассмотрении каждого значения отдельно функция верна. Однако вместе это сбивает с толку.
Похоже, что 31 декабря считается первой неделей, потому что оно выпадает на понедельник, так что технически это правильно, это первая неделя 2019 года. Однако в этом случае я бы хотел, чтобы год перевернулся и читался как 2019.
Как я могу разрешить это, чтобы перенести год только в этом случае? Приветствуется любая помощь.
Ответ №1:
Вам нужно использовать год нумерации недель по стандарту ISO-8601, который является o, если вы хотите указать год для недели по стандарту ISO-8601. Из документов:
ISO-8601 неделя-нумерация года. Это имеет то же значение, что и Y , за исключением того, что если номер недели ISO (W) относится к предыдущему или следующему году, вместо него используется этот год. (добавлено в PHP 5.1.0)
$dueDate->format('W , o');