如何计算两个日期之间的时间差
-
如何计算两个日期之间的时间差
@小福泥 通过二次开发代码来实现,具体步骤如下:
1)为开始时间(日期控件)和结束时间(日期控件)分别添加事件,自定义事件名称,事件类型为“值发生变化时”:
事件设置完成后,在页面js处会自动出现两行代码:
export function start (payload) {}
export function end (payload) {}2) 编写计算时间差的js代码:
function computedTimeConsuming() {
const startDate = Number(ctx.getState('Fi7OfZpJyR'))
const endDate = Number(ctx.getState('t0nAwrSSgj'))
if (!startDate || !endDate) {
return
}
const diff = endDate - startDate
ctx.setState('U5MmiaJSk8', String(moment(endDate).diff(startDate)))
ctx.setState('U5MmiaJSk8', String(moment(endDate).diff(startDate, 'days')))
}具体注释如下:
根据想要计算的维度,第17行中可分别写'days'(天数差)、'years'(年数差)、'months'(月数差)、'weeks'(周数差)、'hours'(小时差)、'minutes'(分钟差)、'seconds'(秒数差)。
需要注意的是,周数差、月数差、年数差都只有在满一周/月/年才会显示为1,就算设置了显示的小数位数,也只会显示为0。例如,以周维度计算:
时间差只有6天,不足一周,因此用周数差'weeks'计算时,只能显示为0,月数差和年数差是同样的道理。因此,若在这种情况下想要要实现周/月/年数差的计算,可分别将第17行代码改为以下即可:
ctx.setState('U5MmiaJSk8', String(moment(endDate).diff(startDate, 'days')/7))
ctx.setState('U5MmiaJSk8', String(moment(endDate).diff(startDate, 'days')/30))
ctx.setState('U5MmiaJSk8', String(moment(endDate).diff(startDate, 'days')/365))修改后计算的周数如下:
3) 将自定义函数写进开始及结束事件里:
export function start (payload) {
computedTimeConsuming()
}
export function end (payload) {
computedTimeConsuming()
}最后总的代码示例如下:
-