vue 获取多个时间段的交集
时间: 2023-05-18 22:04:35 浏览: 87
Vue实现点击时间获取时间段查询功能
可以使用 moment.js 和 lodash 库来实现。具体步骤如下:
1. 安装 moment.js 和 lodash 库:
```
npm install moment lodash
```
2. 引入库:
```javascript
import moment from 'moment';
import _ from 'lodash';
```
3. 定义时间段数组:
```javascript
const periods = [
{
start: '2021-01-01 08:00:00',
end: '2021-01-01 12:00:00'
},
{
start: '2021-01-01 10:00:00',
end: '2021-01-01 14:00:00'
},
{
start: '2021-01-01 13:00:00',
end: '2021-01-01 18:00:00'
}
];
```
4. 使用 moment.js 将时间字符串转换为 moment 对象,并使用 lodash 库的 intersectionWith 方法获取交集:
```javascript
const moments = periods.map(period => ({
start: moment(period.start),
end: moment(period.end)
}));
const intersection = _.intersectionWith(moments, moments, (a, b) => {
return a.start.isSameOrBefore(b.end) && b.start.isSameOrBefore(a.end);
});
```
5. 将交集转换为时间段数组:
```javascript
const result = intersection.map(inter => ({
start: inter.start.format('YYYY-MM-DD HH:mm:ss'),
end: inter.end.format('YYYY-MM-DD HH:mm:ss')
}));
console.log(result);
```
输出结果为:
```javascript
[
{
start: '2021-01-01 10:00:00',
end: '2021-01-01 12:00:00'
},
{
start: '2021-01-01 13:00:00',
end: '2021-01-01 14:00:00'
}
]
```
阅读全文