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

PHP实现带时区的周范围获取,解决GMT+1时区1小时时差问题

修复GMT+1时区下周范围计算的1小时时差问题

原有代码通过手动加3600秒适配时区的方式不可靠,存在两个核心问题:

  • 未考虑夏令时切换场景,每年会有两天时区偏移不是整1小时
  • strtotime解析相对日期时默认使用PHP全局配置的时区,和手动添加的1小时偏移不匹配,最终导致日期计算误差

推荐使用PHP DateTime类显式指定时区,完全避免手动计算时差的问题,修正后代码如下:

/**
 * 获取GMT+1时区下的周范围(上周六到下周六)
 * @return array
 */
function get_week_range(){
    // 显式指定GMT+1时区,含夏令时自动适配,不受全局时区配置影响
    $timezone = new DateTimeZone('Europe/Paris');
    $current_date = new DateTime('now', $timezone);

    $week_range = [];
    // 计算周起始:上周六
    $start = clone $current_date;
    $start->modify('last saturday');
    $week_range['start'] = $start->format('d/m/Y');
    // 计算周结束:下周六
    $end = clone $current_date;
    $end->modify('next saturday');
    $week_range['end'] = $end->format('d/m/Y');

    return $week_range;
}

补充配置说明

  • 如果不需要夏令时支持,固定使用GMT+1偏移,可将DateTimeZone参数替换为'Etc/GMT-1'
  • 如果需要全局生效时区配置,可在项目公共入口文件添加代码:date_default_timezone_set('Europe/Paris');,后续所有date、strtotime等原生日期函数都会自动适配该时区

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:42:00