Проблема форматирования даты в PHP с номером недели - PullRequest
0 голосов
/ 07 марта 2019

Я предоставляю своему веб-интерфейсу отчет за неделю. Я получаю интервал дат и возвращаю данные по частям в формате W-Y (например, 02-2018). Проблема возникает, когда я получил, например, 31.12.2018 в качестве даты начала моего интервала. Когда я форматирую эту дату с шаблоном W-Y, результатом будет 01-2018, потому что 31.12.2018 как день недели «принадлежит» 2019, так что форматер номера недели дает мне 01, а как год полученную 2018, что также правда. Но есть проблема, потому что мои фрагменты должны быть непрерывными, но теперь мои данные выглядят так:

{
  "01-2018": [...],
  "02-2019": [...],
  "03-2019": [...],
  .....
}

Любые предложения, как спроектировать все это?

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Вам необходимо использовать формат o для года, когда вы используете номера недели ISO.Из руководства :

o: годовой номер ISO-8601.Он имеет то же значение, что и Y, за исключением того, что если номер недели ISO (W) относится к предыдущему или следующему году, вместо этого используется этот год.(добавлено в PHP 5.1.0)

echo (new DateTime('2018-12-31'))->format('W-o');

Вывод:

01-2019
1 голос
/ 07 марта 2019

использовать формат даты Wo:)

o: номер года ISO-8601.Он имеет то же значение, что и Y, за исключением того, что если номер недели ISO (W) относится к предыдущему или следующему году, вместо этого используется этот год.(добавлено в PHP 5.1.0)

...