Sivo 悉见

PHP计算两个时间之间相差天数(包括自然天)

匿名 · 更新于 2018/1/31

/**
 * @param $start_time  起始时间
 * @param int $end_time  结束时间 默认0为当前时间
 * @param int $day_type  计算天类型 默认1为自然天  2为计费天(纯粹按照相差时间计算的天数)
 * @return float|int
 */
function calculate_difference_days($start_time,$end_time = 0,$day_type = 1){
    if(!is_numeric($start_time)){ //不是时间戳 转为时间戳
        $start_time = strtotime($start_time);
    }
    if(!is_numeric($end_time)){ //不是时间戳 转为时间戳
        $end_time = strtotime($end_time);
    }
    if(empty($end_time)){
        $end_time = time();
    }
    if($start_time > $end_time){
        return false;
    }
    if($day_type == 1){
        $cha_time = ($end_time-$start_time)%(3600*24);
        $cha_zheng_time = (strtotime(date('Y-m-d',$start_time))+3600*24)-$start_time;
        $is_cha_day = $cha_time - $cha_zheng_time;
        if($is_cha_day >= 0){
            $cha_day = ceil(($end_time-$start_time)/(3600*24))+1;
        }else{
            $cha_day = ceil(($end_time-$start_time)/(3600*24));
        }
    }else if($day_type == 2){
        $cha_day = ceil(($end_time-$start_time)/(3600*24));
    }else{
        return false;
    }

    return $cha_day; }