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

从PHP date()获取年份和周(当周跨越两年时),php,date,Php,Date,我在使用PHP的date()函数时遇到了一个有趣的问题。没有运气在SO上或使用Google找到关于这个问题的讨论,但可能其他人以前也遇到过同样的问题 我试图得到一个给定的时间戳的一年和一周。这是我正在使用的代码: 日期(“Y-\WW”) 从今天起正确输出:2011-W39 问题是在提供时间戳时,例如,如果所讨论的时间戳是2011年1月3日(实际上是“2010年第52周”的一部分)。PHP正确返回W52,但它也返回2011年,而不是2010年 日期(“Y-\WW”,1294016400); 输出:

我在使用PHP的
date()
函数时遇到了一个有趣的问题。没有运气在SO上或使用Google找到关于这个问题的讨论,但可能其他人以前也遇到过同样的问题

我试图得到一个给定的时间戳的一年和一周。这是我正在使用的代码:

日期(“Y-\WW”)

从今天起正确输出:
2011-W39

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

日期(“Y-\WW”,1294016400);

输出:
2011-W52


关于如何解决这个问题有什么想法吗?我应该注意,虽然在这种情况下,比较输出的
strotime()
大于当前的
time()
是很容易的,但我需要一个在前几年也有效的解决方案(例如,如果同样的事情发生在2010年1月3日).

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

从以下文件中:

ISO-8601年号。该值与Y值相同,但如果ISO周号(W)属于上一年或下一年,则使用该年。(在PHP5.1.0中添加)


所以我的代码应该是
date(“o-\WW”)

我刚刚测试过。这可能是时区或地区问题。我已经回答了下面的问题,我应该使用新添加的
o
而不是
Y
。当我遇到这个问题时,我做梦也想不到会找到一个如此简单的问题(我也没有仔细阅读文档)。非常感谢!