我想创建一个脚本来计算承包商在待机时间内工作了多少小时/分钟。
待机时间显示承包商默认的待机时间。
脚本需要计算承包商在这些小时内工作了多少分钟。如果工作进入新的一天,它也应该是兼容的(见下面的示例)。
待机时间
Standby Time From (Example: 18:00)
Standby Time To (Example: 06:00)
行程开始时间
19.30
站点到达时间
20.30
起始时间
03:30
上面的例子应该返回8小时0分钟STANDBY。我在下面解释了原因。
承包商前往19.30上班。
承包商于20.30到达现场。
承包商在03:30到家。
这意味着承包商在待命时间为19.30-03:30(8小时)。
感谢任何帮助:)
编辑
我最初使用的是这个脚本,但当工作时间变成两天时,它就不起作用了。
// get travel start timestring
$travel_time = 70200; //19:30 in seconds
// get home time in seconds
$home_time = 12600; //03:30 in seconds
// get standby_from and standby_to in seconds
$standby_from = 64800; // 18:00 in seconds
$standby_to = 21600; // 06:00 in seconds
// check how many seconds we worked during standby hours
for($sec_of_day=$travel_time;$sec_of_day<=$home_time;$sec_of_day++)
{
if($sec_of_day >= $standby_from && $sec_of_day <= $standby_to)
{
$seconds_sb++;
}
}
echo $seconds_sb; // returns how many seconds
$to_time = strtotime("2008-12-13 10:42:00");
$from_time = strtotime("2008-12-13 10:21:00");
echo round(abs($to_time - $from_time) / 60,2). " minute";
举个简单的例子,您必须使用strtotime()将日期转换为秒,并在两个时间戳之间进行区分。