从PHP日期()获得一年中的一年和一周,当一周跨越两年

时间:2011-09-30 13:30:41

标签: php date

我使用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日发生同样的事情)。

1 个答案:

答案 0 :(得分:24)

Darn,显然我没有仔细阅读文档,在PHP 5.1.0中添加了o字母:

来自date()的文档:

  

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

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