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的情况下使用。关键的一点是,并不是所有的一周定义都以相同的方式工作。