You need to enable JavaScript to run this app. PHP使用DateTime的modify方法取周数组时错位拿到下一周的问题
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用DateTime的modify方法取周数组时错位拿到下一周的问题

核心需求
  • 生成覆盖周一到周六的日期数组
  • 支持按周偏移量跨周期取值,生成过程跳过周日,实现相邻目标周期的连续取值衔接
现有实现代码
function getWeek($w){
    $d = [];
    $week = $w ?? 0;
    $dw = new \DateTime();
    $dw->modify(''.$week.' week monday');
    for($i = 0; $i < 6; $i++){
        $d[$i] = $dw->format('Y-m-d');
        if($i == 5){
            $dw->modify('+2 day');
        }else{
            $dw->modify('+1 day');
        }
    }
    return $d;
}
现存问题
  • 当周偏移量取默认值0时,偶发跳过当前自然周、直接返回下一周日期的异常
  • 临时将周偏移量设为-1时,可正确返回当前周的日期,但跨过下一个周一节点后,函数仍返回此前周期的日期,无法正确匹配目标周期
待排查方向
  • 上述错位问题是否与PHP默认使用UTC时区的配置有关
  • 是否可以通过调整实现逻辑、替换原生时间处理函数的方式,完全修复周期错位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 21:15:03