首页 > 解决方案 > date() 为一年中的第一天返回错误的周数

问题描述

不知何故,函数的返回值在date()这里毫无意义。有人知道为什么吗?

也许我遗漏了一些东西,但根据 PHP 手册,以下内容没有意义:

echo date('W', strtotime("2021-01-01"));

输出:

53

一年的第一天不应该在第 1 周吗?其他日期似乎也被打破(例如2021-01-05返回01)。我检查了输出,strtotime()但 UNIX 时间戳似乎是正确的。我在这里想念什么?

标签: phpdate

解决方案


PHP 的DateTime 格式文档

W - ISO-8601 年的周数,从星期一开始的周数

ISO-8601 对一年中第一周的定义:

周从星期一开始,到星期日结束。每周的年份是星期四所在的公历年。因此,一年的第一周总是包含4 January

它返回 53,因为 01/01/2021 是在 2020 年的第 53 周。

如果你这样做

echo date('W', strtotime("2021-01-04")); // first Monday of year 2021

它会回来01


推荐阅读