如何使用php获取总工作时间

如何使用php获取总工作时间,php,Php,我必须找出员工的总工作时间 我手里的变量是 $work_time_start = "8:00:00"; $work_time_end = "18:00:00"; $lunch_break_start = "13:00:00"; $lunch_break_end = "14:00:00"; 从这一点,我必须找到一个员工的总工作时间 比如说 //example 1 $work_start_time = "14:00:00"; $work_end_time = "14:25:00"; /

我必须找出员工的总工作时间

我手里的变量是

$work_time_start = "8:00:00";
$work_time_end = "18:00:00";
$lunch_break_start = "13:00:00";
$lunch_break_end = "14:00:00";
从这一点,我必须找到一个员工的总工作时间

比如说

//example 1    

$work_start_time = "14:00:00";
$work_end_time = "14:25:00";

//The output should be: 00:25:00

//example 2

$work_start_time = "14:00:00";
$work_end_time = "10:25:00";

//The output should be: 06:25:00

如何实现所需的输出。我不知道。

根据要求详细回答

$work_time_start = "8:00:00";
$work_time_end = "18:00:00";
$lunch_break_start = "13:00:00";
$lunch_break_end = "14:00:00";

$worktime = convert_to_seconds($work_time_end) - convert_to_seconds($work_time_start);

$lunchtime = convert_to_seconds($lunch_break_end) - convert_to_seconds($lunch_break_start);

$worktime = $worktime - $lunchtime;
echo $worktime;


function convert_to_seconds($str_time)
{

    $str_time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $str_time);

    sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);

    $time_seconds = $hours * 3600 + $minutes * 60 + $seconds;

    return $time_seconds;
}
希望这有帮助

$work_start_time =new DateTime("14:00:00");
$work_end_time = new DateTime("14:25:00");
$interval = $work_end_time->diff($work_start_time);

echo $interval->format('%H:%I:%S');

使用以下代码:

$work_time_start = "8:00:00";
$work_time_end = "18:00:00";
$lunch_break_start = "13:00:00";
$lunch_break_end = "14:00:00";
$total_time = strtotime($lunch_break_start) - strtotime($work_time_start) + strtotime($work_time_end) - strtotime($lunch_break_end);
echo date("h:i:s", mktime(0,0, round($total_time) % (24*3600)));

将所有内容转换为普通秒,然后使用它,并根据需要转换回显示。这基本上就是在一些特殊情况下获得时差。这不是一个完全相同的问题,但你应该能够根据许多其他类似的问题得出答案。至少让我们看看您尝试了什么。为什么示例2的输出应该是06:25:00?您是否在24小时和12小时的混合时间格式中工作,而不定义哪个是哪个?如果是这样的话,不要指望这里有任何答案。你需要规范化你的数据。无法使用
$work\u start\u time
$work\u end\u time