样式:
位置:public/assets/js/backend/pim/test.js
//实际时间
{field: 'times', title: __('Times')+'('+__('Unit')+')', operate:'RANGE', addclass:'datetimerange', autocomplete:false,
formatter:function(value,row,index){
if(row.startdate=='2022-10-10 00:00:00' || row.activitytime=='2022-10-10 00:00:00'){//如果开始实现为默认值
return __('noset');//未开始或进行中,时间都为未设定,只有结束之后才进行计算
}
else{
//转换为日期的变量
startdate = new Date(row.startdate.toString());
activitytime = new Date(row.activitytime.toString());
if(activitytime-startdate<0){//根据语言库中的信息返回
return __('Startdate')+__('Or')+__('Activitytime')+__('Error');
}
else{
return ((activitytime-startdate)/(1000*60*60)).toFixed(1);//
//除1000表示从毫秒转换为秒,*60转换为分钟,*60转换为小时,toFixed表示精确到小数点后一位
}
}
}
},
语言库:application/admin/lang/zh-cn/pim/test.php
'Startdate' => '开始日期',
'Activitytime' => '活动时间(datetime)',
'Times' => '消耗时间',
'Unit' => '小时',
'Noset' => '未设定',
'Or' => '或',
'Error' => '错误',
1、添加时间单元格
2、当开始时间为指定值(未开始)或者结束时间为指定值(未结束),这两种状态,两者差都无法计算,返回单元格值为“为设定”
3、当状态为已完成,即可进行计算,将开始时间与结束时间都转换为日期的变量,为了计算
new Date(row.XXX.toString())
4、错误提示设置:当结束日期大于开始日期,表明数据出错,即返回错误信息
5、正确情况,进行计算:((activitytime-startdate)/(1000*60*60)).toFixed(1);
ctivitytime-startdate表示差值计算
除1000表示从毫秒转换为秒,
第一个*60转换为分钟,
第二个*60转换为小时,
toFixed表示精确到小数点后一位