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

PHP实现:计算两个时间戳区间内员工周日工作分钟数

统计员工上下班时间戳内周日工作总分钟数的PHP实现

我需要通过两个代表员工上下班时间的时间戳,计算这段区间内员工在周日工作的总分钟数,以下是实现的PHP函数:

function get_sunday_hours_from_timestamps($startTimestamp, $endTimestamp) {
    $start = new DateTime();
    $start->setTimestamp($startTimestamp);
    $end = new DateTime();
    $end->setTimestamp($endTimestamp);
    $workedMinutes = 0;
    $current = clone $start;
    while ($current <= $end) {
        $next = clone $current;
        $next->modify('next day');
        if ($current->format('w') == 0) {
            $dayStart = ($current < $start) ? $start : $current;
            $dayEnd = ($next > $end) ? $end : $next;
            $diff = $dayEnd->diff($dayStart);
            $minutes = $diff->days * 1440 + $diff->h * 60 + $diff->i;
            $workedMinutes += $minutes;
        }
        $current = $next;
    }

    return $workedMinutes / 60;
    // return $workedMinutes;
}

代码逻辑说明

  • 将输入的时间戳转换为DateTime对象,方便进行日期时间的遍历与计算
  • 从员工上班时间开始,逐天遍历至下班时间
  • 通过format('w') == 0判断当天是否为周日(w格式符返回0代表周日,1-6对应周一至周六)
  • 针对周日计算实际工作时长:
    • 若当天起始时间早于员工上班时间,以上班时间作为该周日的工作起始点
    • 若次日起始时间晚于员工下班时间,以下班时间作为该周日的工作结束点
  • 利用diff()方法计算时间段差值,转换为分钟数后累加统计
  • 函数默认返回总工作小时数,注释的语句可直接返回总分钟数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:32:32