Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的周问题_Php_Date - Fatal编程技术网

php中的周问题

php中的周问题,php,date,Php,Date,有人能解释一下为什么会这样吗 strftime('%YW%U',strotime('2013W37'))='2013W36' 我有一些代码依赖于它不会发生。还有别的选择吗 我在OSX上使用PHP5.4.9,既然您使用PHP5.4,为什么不使用Datetime()类 像这样的 $date = new Datetime('2013W37'); print $date->format('Y\WW'); 这将输出2013W37 此外,通过使用Datetime()类,您可以打开OOP的强大功能以

有人能解释一下为什么会这样吗

strftime('%YW%U',strotime('2013W37'))='2013W36'

我有一些代码依赖于它不会发生。还有别的选择吗


我在OSX上使用PHP5.4.9,既然您使用PHP5.4,为什么不使用
Datetime()

像这样的

$date = new Datetime('2013W37');

print $date->format('Y\WW');
这将输出2013W37

此外,通过使用Datetime()类,您可以打开OOP的强大功能以及大量的日期数学函数

您可以在此处阅读更多内容:

解析此字符串时,应使用
%V
表示周数


PS:但是由于某些原因,
%V
在Windows上不起作用。

您使用了错误的格式字符

字符串
“2013W37”
由ISO-8601中的
strotime
解释,其中周从周一开始,一年中的第一周是新年中至少包含4天的周,编号为1

但是
%U
会获取一年中的周数,其中一周从周日开始,一年中的第一周是第0周


你想要的是
%YW%V
,因为
%V
是ISO-8601的周数。

你想要发生什么?好吧,我想他想要
2013W37
作为结果。我敢打赌这是一个时区问题(日期移到前一周几个小时)我们都能猜到,我会等着看他是否愿意回答。结果是'2013W37'正是我想要的结果,但我现在看到我不注意ISO标准是问题哦,我以前从未见过那个文档页面。我花了一段时间才明白我在看什么,但这是一个非常方便的参考资料。我一直认为strotime和它的OO近亲都是“魔法”;)关于该主题的文档中还有3页。请注意,
DateTime
构造函数使用与
strotime
相同的解析过程,
DateTime::format
使用与
date
相同的格式说明符,因此此答案也可以在没有OOP的情况下使用。关键的一点是,并不是所有的一周定义都以相同的方式工作。