Intereting Posts

Получить «правильный» год определенной даты с PHP DateTime

Я пытался преобразовать дату «ГГГГ / ММ / ДД» в формат «ГГГГ / WW», поэтому я могу хранить еженедельные данные агрегации, которая имеет структуру ниже

aggre_date(YYYY/WW) value id 

Но я нашел неприятную проблему

 $dateTime = new DateTime("2014-12-30"); echo $dateTime->format("YW")."\n"; $dateTime = new DateTime("2014-01-01"); echo $dateTime->format("YW")."\n"; 

Результат точно такой же 2014-01 , но первый должен быть 2015-01 .

Есть ли способ улучшить мой недельный анализ данных агрегации или получить «правильный» год?

Вы должны использовать o для года ISO:

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

 $dateTime = new DateTime("2014-12-30"); echo $dateTime->format("oW")."\n"; $dateTime = new DateTime("2014-01-01"); echo $dateTime->format("oW")."\n"; 2015-01 2014-01 

демонстрация