【发布时间】:2018-01-26 11:51:08
【问题描述】:
我正在测试这些案例:
$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
为什么会这样?
肯定有我不太明白的地方。
【问题讨论】:
-
你知道第二个参数是周数,而不是月份,对吧?
-
检查文档兄弟和示例。 php.net/manual/en/datetime.setisodate.php
-
你确定要
DateTime::setISODate()吗?它的第二个参数是周数,而不是月份。根据您的期望,我认为您实际上正在寻找DateTime::setDate()。