You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP列表视图动态周切换实现:如何输出周一到周日的正确周区间

问题根源

现有代码的核心问题有两个:

  1. 偏移量计算逻辑错误:date('N') 返回1(周一)到7(周日)的星期数值,初始获取的$ts已经是周一的时间戳,再执行$ts = $ts - $offset * 86400时,相当于在周一基础上再往前推N天,直接跳到了上周日,所以输出的周区间是周日到周六,比实际周早一周。
  2. 语法错误:$ts = date(strtotime('last monday'))写法错误,date函数第一个参数需要传入日期格式,此处不需要包裹date,直接使用strtotime返回的时间戳即可。

修复后代码(周一到周日周区间)

// 基准时间戳,默认取当前时间
$base_ts = time();
// 周偏移量:0为当前周,-1为上周,1为下周,可对接上下周切换按钮动态修改
$week_offset = 0;

// 精准获取指定偏移周的周一零点时间戳
$ts = strtotime('monday this week', $base_ts) + $week_offset * 7 * 86400;

// 输出ISO标准周数
$week = date('W', $ts);
echo "<p>$week</p>";
// 循环输出周一到周日共7天的日期
for ($x = 0; $x < 7; $x++, $ts += 86400) {
    echo '<p>' . date("d.m.Y", $ts) . '</p>';
}

修改说明

  • 废弃原有的手动计算偏移的错误逻辑,直接使用strtotime('monday this week')精准获取当前周周一的时间戳,避免手动计算误差
  • 周偏移量$week_offset可直接对接上下周切换按钮的传参,无需额外调整其他逻辑
  • 输出的周区间完全匹配ISO周数统计规则,不会再出现周数提前一周的问题

内容的提问来源于stack exchange,提问作者Sven Lorenzino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:06:03