【发布时间】:2012-07-26 13:48:29
【问题描述】:
正如标题所说,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 周。wikipedia article 说
如果 1 月 1 日在周一、周二、周三或周四,则为第 01 周。如果 1 月 1 日在周五、周六或周日,则为上一年的第 52 周或第 53 周。
这变得很棘手,因为一年中的最后几天也在第 52/53 周。 date("W") 不分当年和上年。
【问题讨论】:
-
INFO:“一周的开始”因文化和国家/地区而异。例如,在北美,一周从星期日 (!) 开始。你们这些美国人到底怎么了,这周根本不是从星期日开始的? ;) Afaik 还有一些国家将星期三定义为“一周的第一天”。
-
顺便说一句,一个类似的问题现在是 PHP 日期文档页面上投票率最高的评论:php.net/manual/de/function.date.php#106974
标签: php date week-number