【发布时间】:2017-02-28 19:53:08
【问题描述】:
想要获得一年中的最长周数,并认为这是获得此数字的最简单方法,但令我惊讶的是,一年中的最后一天可能是第一周。这是因为这些天是在一周的前半段吗?
所以我知道如何得到正确的数字,我只是想知道逻辑。
<?php
echo (new DateTime('2016-12-31 00:00:00'))->format('W'); //52
echo (new DateTime('2017-12-31 00:00:00'))->format('W'); //52
echo (new DateTime('2018-12-31 00:00:00'))->format('W'); //01
echo (new DateTime('2018-12-30 00:00:00'))->format('W'); //52
echo (new DateTime('2019-12-31 00:00:00'))->format('W'); //01
echo (new DateTime('2019-12-30 00:00:00'))->format('W'); //01
echo (new DateTime('2019-12-29 00:00:00'))->format('W'); //52
echo (new DateTime('2020-12-31 00:00:00'))->format('W'); //53
通过已回答的链接找到(维基百科):
上周
ISO 周编号年份的最后一周,即第 52 或第 53 一,是第01周的前一周。本周的属性是:
里面有今年的最后一个星期四。
这是最后一周,大部分(4 天或更多)天在 十二月。
它的正午,星期四,正好是年末的一年。
最后一天是最接近 12 月 31 日的星期日。
里面有 12 月 28 日。因此,最晚可能的日期是 28 12 月至 1 月 3 日,最早的 12 月 21 日至 28 日。
如果 12 月 31 日是星期一、星期二或星期三,则为第 01 周 明年的。如果是星期四,则在一年的第 53 周 刚刚结束;如果在星期五,则在第 52 周(或 53,如果年份刚刚 结束是闰年);如果在星期六或星期日,则在第 52 周 刚刚结束的一年
【问题讨论】:
-
星期是正确的,有关第 53 周的更多信息,请参阅en.wikipedia.org/wiki/ISO_week_date