php - setISODate 那样工作吗?

标签 php php-7 isodate

我正在测试这些案例:

$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/

相关文章:

php - 未找到带有App Engine标准类 'Facade\Ignition\IgnitionServiceProvider'的Laravel

mysql - 基表或 View 已存在! (拉拉维尔航海者)

scala - joda 时间 ISO 日期时间格式

javascript - Ajax window.location 不适用于 PHP 登录脚本

php - 显示mysql数据库字段

php - 为什么这个注册表单ajax mysql insert在chrome和safari中有效,但在firefox中无效?

mongodb - 在 mac os 10.15 for php7 上安装 mongodb

javascript - 如何格式化数据表中显示的日期

python - 为什么 datetime.now().isoformat() 根据 time.fromisoformat() 返回无效的 isoformat 字符串?

php - 如何启用 XAMPP 在本地使用 php 的 mail() 函数,这样我就可以在本地测试我的 mail() 脚本而无需上传到我的服务器?