【发布时间】:2017-07-14 18:35:15
【问题描述】:
根据每年的周数部分中的公式https://en.wikipedia.org/wiki/ISO_week_date,您应该能够找到每年有 53 周的时间。我已将公式复制到 PHP 中,但它似乎在 2020 年左右变得混乱,返回 52 周而不是 53 周。
function weeks($year){
$w = 52;
$p = ($year+($year/4)-($year/100)+($year/400))%7;
if ($p == 4 || ($p-1) == 3){
$w++;
}
return $w." ".$p;
}
for ($i = 2000; $i <= 2144; $i++) {
echo $i." (".weeks($i).") | ";
}
来自维基百科
400 年周期中接下来的 71 年有 53 周(371 天); 未列出的年份有 52 周(364 天);为当前年份添加 2000:
004、009、015、020、026、032、037、043、048、054、060、065、071、076、 082、088、093、099、105、111、116、122、128、133、139、144
我知道我可以使用 date() 函数获取给定年份的总周数,但我只是想知道是否有人知道数学,因为维基百科上的公式似乎是错误的。
编辑工作代码
function p($year){
return ($year+floor($year/4)-floor($year/100)+floor($year/400))%7;
}
function weeks($year){
$w = 52;
if (p($year) == 4 || p($year-1) == 3){
$w++;
}
return $w; // returns the number of weeks in that year
}
for ($i = 2000; $i <= 2144; $i++) {
echo $i." (".weeks($i).") | ";
}
【问题讨论】:
-
没有一年有 53 周。
-
@JayBlanchard 所以 100 年有 36,400 天? :)
-
周数和 ISO 周数可能不同。我想我只会查看一年中最后一天的 ISO 周数。
-
LOL @hobbs - 有 52 年和部分年份,但没有完整 53 周的年份。
-
@JayBlanchard 周一至周日可能没有 53 个“完整”周,但我需要考虑半周或四分之一周
标签: php math week-number