我正在测试这些案例:
$date = new \DateTime();
echo($date->format('Y.m.d')) . PHP_EOL;
$date->setISODate(2018, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;
$date->setISODate(2019, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;
$date->setISODate(2020, 1, 1);
echo($date->format('Y.m.d')) . PHP_EOL;
输出:
2017.08.17
2018.01.01
2018.12.31
2019.12.30
我知道它会显示以下内容:
2017.08.17
2018.01.01
2019.01.01
2020.01.01
为什么会发生这种情况?
肯定有一些我不太明白的地方。
最佳答案
参数为年
、周
、dayofweek
。 PHP 的一周从星期一开始,一年的第一周是一月份至少有 4 天的第一周。
在 2018 年,一年从星期一开始,因此第一周从 1 月 1 日开始,也就是一周的第一天。
在 2019 年,一年从星期二开始,因此第一周从 2018 年 12 月 31 日星期一开始,也就是一周的第一天。
2020 年,一年从星期三开始,因此第一周从 2019 年 12 月 30 日星期一开始,因此这是一周的第一天。
关于php - setISODate 那样工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45745698/