【发布时间】:2021-04-21 14:20:03
【问题描述】:
我想计算我的企业在一周内营业的时间。 我一周有很多时间段。 问题是其中一些重叠,计算错误。 这是一个例子:
在我的日子里,我有 3 个这样的范围:
数组是这样的:
const obj = [
{
startDate: 'Mon Apr 19 2021 08:30:00 GMT+0200',
endDate: 'Mon Apr 19 2021 12:00:00 GMT+0200'
},
{
startDate: 'Mon Apr 19 2021 09:00:00 GMT+0200',
endDate: 'Mon Apr 19 2021 12:30:00 GMT+0200'
},
{
startDate: 'Mon Apr 19 2021 09:30:00 GMT+0200',
endDate: 'Mon Apr 19 2021 13:00:00 GMT+0200'
},
...
]
(这是一个小例子,因为我这周还有其他路口)
最后,我做了什么,但交叉路口的问题是这样的:
const total = (obj.length > 0)
? obj.map(item => {
const end = moment(item.endDate)
const start = moment(item.startDate)
const duration = moment.duration(end.diff(start))
return duration.asHours()
}).reduce((a, b) => a + b)
: 0
这里的结果是 10,5 小时:这是错误的 我不知道如何考虑重叠范围以获得真正的结果:从 8:30 到 13:00 工作,所以好的结果是 4.5 小时。
感谢您的帮助
【问题讨论】:
标签: reactjs date range momentjs overlap