我在PHP 5.6中发现了一个可能的错误.strftime带参数的函数%G生成4位数年份.然而,它似乎回归错误的一年1483246800- 即2017年1月1日.它将返回2016年!
示例代码段:
echo strftime('%G', strtotime('2017-01-01'));
Run Code Online (Sandbox Code Playgroud)
这应该打印"2017",但我得到"2016".我正在运行PHP 5.6.这种边缘情况也出现在其他年份 - 例如2016-01-03输出2015而不是2016.
这不是一个错误.
%G - 与ISO周数对应的4位数年份(参见%V).它具有与%Y相同的格式和值,除非ISO周数属于上一年或下一年,而是使用该年代 ...提醒有关ISO周数的提醒.它们从星期一开始,在星期日结束,并且被认为是他们大部分时间都在下降的一年的一部分.
这意味着使用%G接近一年开始/结束的日期可以为您提供正确的年份,上一年,如您的情况或下一年(例如,echo strftime('%Y', strtotime('2002-12-30))给出2003).
如果你想得到正确的年份,你应该使用%Y.echo strftime('%Y', strtotime('2017-01-01'));给2017年.
还值得查看%V的定义:
ISO-8601:1988年给定年份的周数,从一年的第一周开始,至少有4个工作日,周一是本周的开始.
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |