【发布时间】:2010-02-04 18:11:02
【问题描述】:
我最近遇到了一个大问题,因为我有一个每周向客户付款的系统。
众所周知,一年有 52 周,并且有标准。我正在使用 PHP aka date('W') 从日期中获取周数,该日期根据标准 ISO-8601 计算得出。
以下是一些参考资料:
但问题是:2009 年有 53 周。似乎通过公历 400 年内有 71 年有 53 周。这是我不知道的一件事,可能很多人也不知道。
根据维基百科:
2009-12-31 是 2009-W53-4(ISO 2009 年有 53 周,延长了公历 2009 年,从星期四开始和结束,两端各三天)。
PHP 中的日期函数完全尊重它。
如果您查看 MS Outlook,并在日历视图中显示星期几,它将显示为 52 周 考虑 2009 年 12 月 28 日至 2010 年 1 月 3 日第 1 周。这是另一个标准吗?美国标准还是什么?
如果是这样,那为什么 PHP 不能支持呢?有没有人制作了支持这个的函数?
53 周是否正确?我们有欧洲和美国的客户。
【问题讨论】:
-
有趣的问题。我注意到 Outlook 在 2011 年有第 53 周。看起来它将“第 1 周”定义为包含 1 月 1 日的第一周。由于根据设置,周可以从周日或周一开始,实际上可能因不同而有所不同用户。
-
我刚试过。 Outlook 将允许您选择任何一天作为一周的开始日,并且周编号仅从包含 1 月 1 日的那一周开始。因此 Outlook 中有七种不同的编号方案可用。