gpt4 book ai didi

php - 为什么 strftime ('%G' , strtotime ('2017-01-01' )) 产生 2016 年?

转载 作者:行者123 更新时间:2023-12-02 06:29:53 25 4
gpt4 key购买 nike

我在 PHP 5.6 中发现了一个可能的错误。参数为 %G 的函数 strftime 生成 4 位数年份。然而,它似乎在喂食 1483246800 时返回错误的年份 - 即 2017 年 1 月 1 日。它返回 2016 年!

示例代码片段:

echo strftime('%G', strtotime('2017-01-01'));

这应该打印“2017”,但我得到的是“2016”。我正在运行 PHP 5.6。这种极端情况也会出现在其他年份——例如2016-01-03 输出 2015 而不是 2016。

最佳答案

这不是错误。

作为someone pointed out在回答前一段时间其他人提交的错误报告时:

%G - The 4-digit year corresponding to the ISO week number (see %V). This has the same format and value as %Y, except that if the ISO week number belongs to the previous or next year, that year is used instead...A reminder about ISO week numbers. They begin on mondays, end on sundays, and are considered a part of the year in which the majority of their days fall.

这意味着使用 %G 作为接近一年开始/结束的日期可以为您提供正确的年份,即您的情况下的 年,或者 年,(例如,echo strftime('%Y', strtotime('2002-12-30)) 给出 2003) .

如果你想获得正确的年份,你应该使用 %Y 代替。 echo strftime('%Y', strtotime('2017-01-01')); 给出 2017。

它也值得一试 the definition of %V :

ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week.

关于php - 为什么 strftime ('%G' , strtotime ('2017-01-01' )) 产生 2016 年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com