当周跨越两年时,从PHP date()获取年和周


Getting year and week of year from PHP date() when week spans two years

我在使用PHP的date()函数时遇到了一个有趣的问题。还没有找到任何关于这个问题的讨论在SO或使用谷歌,但也许有人以前遇到过同样的问题?

我正在尝试获取给定时间戳的年份和年份中的星期。这是我使用的代码:

date("Y-'WW");

今天正确输出:2011-W39 .

问题是在提供时间戳时,如果有问题的时间戳是,例如,2011年1月3日(实际上是"2010年第52周"的一部分)。PHP正确返回W52,但它也返回2011年,而不是2010年。

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

输出:2011-W52

你知道如何解决这个问题吗?我应该注意到,虽然在这种情况下很容易比较输出的strtotime()大于当前的time()并进行调整,但我需要一个解决方案,该解决方案将适用于前几年(例如,如果同样的事情发生在2010年1月3日)。

该死,显然我没有仔细阅读文档,字母o是在PHP 5.1.0中添加的:

来自date()的文档:

ISO-8601年号。这与Y具有相同的值,除了如果ISO周数(W)属于前一年或下一年,则使用该年份。(在PHP 5.1.0中添加)

所以我的代码应该是date("o-'WW");