计算两个时间的时间差,并排除掉周末两天

ぐ巨炮叔叔 提交于 2019-11-28 20:12:10
参数为时间戳
function workDays($start, $end)
{
    $end < $start && exit;
    $double = ($end - $start) / (7 * 24 * 3600);
    $double = floor($double);
    $start_weekday = date('w', $start);
    $end_weekday = date('w', $end);
    //开始结束时间去掉周末
    if($start_weekday==6 || $start_weekday==0) {
        if ($start_weekday == 6) {
            $start = strtotime(date('Y-m-d', $start)) + 2 * 24 * 3600;
        }
        if ($start_weekday == 0) {
            $start = strtotime(date('Y-m-d', $start)) + 1 * 24 * 3600;
        }
        $start_weekday = date('w', $start);
    }
    if($end_weekday==6 || $end_weekday==0) {
        if ($end_weekday == 6) {
            $end = strtotime(date('Y-m-d', $end));
        }
        if ($end_weekday == 0) {
            $end = strtotime(date('Y-m-d', $end)) - 24 * 3600;
        }
        $end_weekday = date('w', $end);
    }
    //获取整天的秒数
    $weekday = $start_weekday > $end_weekday ? $end_weekday + 5 : $end_weekday;
    $whole_days = $double * 5 + $weekday - $start_weekday;
    $whole_days = date('H', $start)>date('H', $end) ? $whole_days-1 : $whole_days;
    $seconds = $whole_days * 24 * 3600;
    //获取不到一整天的秒数
    $left_second = ($end - $start) % (24 * 3600);
    //总秒数
    $data = $seconds + $left_second;
    //秒数转换成 天/时/分
    $day = floor(($data) / 86400);
    $hour = floor(($data) % 86400 / 3600);
    $minute = floor(($data) % 86400 / 60);
    $result = ((!empty($day)) ? ($day . '天') : '') . ((!empty($day) && !empty($hour)) ? (($hour) . '小时') : (!empty($hour) ? ($hour . '小时') : '')) . ((!empty($hour)) ? (($minute - $hour * 60) . '分') : (!empty($minute) ? ($minute . '分') : ''));
    return $result;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!