Получение года и недели года из PHP date (), когда неделя охватывает два года - PullRequest
7 голосов
/ 30 сентября 2011

Я столкнулся с интересной проблемой, используя функцию PHP date(). Не повезло найти обсуждение этого вопроса на SO или с помощью Google, но, возможно, кто-то еще сталкивался с той же проблемой раньше?

Я пытаюсь получить ГОД и НЕДЕЛЮ ГОДА для данной временной отметки. Это код, который я использую:

date("Y-\WW");

Что на сегодняшний день правильно выводит: 2011-W39.

Проблема заключается в предоставлении метки времени, если эта метка времени, например, 3 января 2011 года (которая фактически была частью «52-й недели 2010 года». PHP правильно возвращает W52, но также и 2011 год). как год, а не 2010.

date("Y-\WW", 1294016400);

Выходы: 2011-W52

Есть идеи, как решить эту проблему? Я должен отметить, что хотя в этом случае было бы просто сравнить, что strtotime() выходного сигнала больше, чем текущий time(), и отрегулировать, но мне нужно решение, которое будет работать и в предыдущие годы (например, если то же самое произошло 3 января 2010 года).

1 Ответ

24 голосов
/ 30 сентября 2011

Черт, видимо, я недостаточно внимательно перечитал документацию, в PHP 5.1.0 было добавлено письмо o:

Из документации на date():

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

Так что мой код должен был быть date("o-\WW");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...