Я столкнулся с интересной проблемой, используя функцию date()
PHP. Не повезло найти обсуждение этого на 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 года).
Darn, по-видимому, я не перечитал документацию достаточно близко, письмо o
было добавлено в PHP 5.1.0:
Из документации для date()
:
Номер года ISO-8601. Это имеет то же значение, что и Y, за исключением того, что если номер недели ISO (W) относится к предыдущему или следующему году, этот год используется вместо этого. (добавлено в PHP 5.1.0)
Поэтому мой код должен был быть date("o-\WW");