正如标题所说,PHP 的 date("W") 函数返回日历周(当天)。不幸的是,它在大多数年份的第一天返回 52 或 53。以简单的思维方式,这是正确的,但非常烦人,因为 2012 年 1 月 1 日不是日历周 52,它不是当年的日历周。大多数日历将其定义为上一年的第 0 周或第 52 周。
当您按日历周对一年中的每一天进行分组时,这非常棘手:2012 年 1 月 1 日和 2012 年 12 月 31 日都放在同一个日历周组中。
所以我的问题是:PHP 的 date("W") 是否有(本机)年份敏感的替代方案?
编辑:我想我以一种非常不清楚的方式写了这个问题的第一个版本,所以这是我的编辑:我正在寻找一个函数,它可以在一年的第一天返回正确的日历周。PHP 的 date("W") 在 2012 年 1 月 1 日返回 52,这是“错误的”。它应该为 0 或 null。根据官方消息,一年中的第一个日历周从一年的第一个星期一开始。所以,如果一年的第一天不是星期一,那就不是第一周!这是第 0 周。维基百科的文章说
如果 1 月 1 日在星期一、星期二、星期三或星期四,则在第 01 周。如果 1 月 1 日在星期五、星期六或星期日,则在上一年的第 52 周或第 53 周。
这变得很棘手,因为一年中的最后几天也在第 52/53 周。date("W") 不分为当年和上年。