2011-09-30 116 views
7

我遇到了一个有趣的问题,使用PHP的date()函数。没有任何运气在SO或使用Google上讨论过这个问题,但也许别人之前遇到过同样的问题?从PHP的日期(一周)开始,每周跨越两年

我想获得给定时间戳的年份和年的周。这是我使用的代码:

date("Y-\WW");

哪像今天的正确输出:2011-W39

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

​​

输出:2011-W52

如何解决这个问题的任何想法,我要指出的是,尽管在这种情况下,它会很容易只比较了吗?输出的strtotime()大于当前的time()并进行调整,但我需要一个可用于前几年的解决方案(例如,如果2010年1月3日发生同样的事情)。

+2

我只是测试['日期( “Y- \ WW”,1294016400)'在IDEOne,我得到'2011-W01 '](http://ideone.com/HWyeo)。 – JRL

+0

这可能是一个时区或地区的事情。我已经回答了下面的问题,我应该使用新添加的“o”而不是“Y”。 –

回答

23

织补,显然我没有重新读取文档不够紧密,这封信在PHP 5.1.0中加入o

从文档date()

ISO-8601年数。这与Y的值相同,只是如果ISO周数(W)属于上一年或下一年,则使用该年。 (在PHP 5.1.0添加)

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

+1

当我遇到这个问题时,我无法梦想以完全相同的关注和这样一个简单的答案找到一个SO问题(我没有仔细阅读文档)。非常感谢 ! – neemzy

相关问题