PHP - 如何从SLA计算中排除非工作时间

时间:2018-01-02 10:56:06

标签: php

我想为给定的任务定义SLA,不包括PHP的周末,假日和非工作时间。工作日周一至周五和工作时间上午9点至下午5点。 如何定义SLA并计算在PHP中完成任务所需的时间?

1 个答案:

答案 0 :(得分:0)

编辑问题: 这里是我试过的代码,我可以排除周末和假期。但是也希望排除非工作时间

function _getBusinessDayOfMonth($ startDate,$ businessDays,$ holidays) {

$date = strtotime($startDate);
$i = 0;

while($i < $businessDays)
{
    //get number of week day (1-7)
    $day = date('N',$date);
    //get just Y-m-d date
    $dateYmd = date("Y-m-d",$date);
    $datehis=date("H:i:s",$date);
    if($day < 6 && !in_array($dateYmd, $holidays)){
        $i++;
    }       
    $date = strtotime($dateYmd . ' +1 day'.$datehis);
}       
$day = date('N',$date);
$d=date("Y-m-d",$date);
if( $day==7||in_array($d, $holidays))
{
    $date = strtotime($d . ' +1 day'.$datehis);
}
elseif($day==6)
{
    $date = strtotime($d . ' +2 day'.$datehis);
}


//return date('Y-m-d H:i:s',$date);
return date('Y-m-d H:i:s',$date);

}