JS代码
//这里用的layui的laydate,laydate的使用方法自行官方查阅文档
function worktimeToManhour(){
var manhour = 0;
$.each($('.worktime'),function(k,v){
var _worktime = $(v).val();
if(_worktime){
var splitTime = _worktime.split(" - ");
if(splitTime[0] == splitTime[1]){
$(v).val('');
layer.msg('单次上下班时长不得大于等于24小时',{icon:2});
}
var stimeAry = splitTime[0].split(":");
var sMinute = parseInt(stimeAry[0]) * 60 + parseInt(stimeAry[1]);
var etimeAry = splitTime[1].split(":");
var eMinute = parseInt(etimeAry[0]) * 60 + parseInt(etimeAry[1]);
if(splitTime[0] < splitTime[1]){//当日工时计算
manhour += eMinute - sMinute;
}
if(splitTime[0] > splitTime[1]){//跨日工时计算
manhour += 1440 - sMinute + eMinute;
}
}
});
// 分钟转时分
var hour = parseInt(manhour / 60);
var minute = parseInt(manhour % 60);
$('.manhour').text(hour+'小时'+minute+'分钟');
}
PHP代码
// 上下班时间转成工时(分钟)$worktime = ['00:00 - 23:30']
private function worktimeToManhour($worktime){
if(!$worktime){
return 0;
}
$msgObj = new Msg ();
$manhour = 0;
foreach ($worktime as $key => $value) {
$timeTempAry = explode(' - ', $value);
$stime = $timeTempAry[0];
$etime = $timeTempAry[1];
if($etime == $stime){
$msgObj->addMsg ( 'error', '单次上下班时长不得大于等于24小时' );
}
$stimeAry = explode(':', $stime);
$sMinute = intval($stimeAry[0]) * 60 + intval($stimeAry[1]);
$etimeAry = explode(':', $etime);
$eMinute = intval($etimeAry[0]) * 60 + intval($etimeAry[1]);
if($etime < $stime){//跨日工时计算
$manhour += 1440 - $sMinute + $eMinute;
}
if($stime > $etime){//当日工时计算
$manhour += $eMinute - $sMinute;
}
}
// 这里转换出来的是分钟 转换成小时
$manhours = ceil($manhour / 60 * 100) / 100 ;
return $manhour;
}