vue 获取多个时间段共有的时间段
时间: 2023-05-18 13:04:38 浏览: 101
你可以使用 moment.js 库来处理时间,具体实现方法如下:
1. 首先将多个时间段转换为 moment 对象,例如:
```
const start1 = moment('2022-01-01 08:00:00');
const end1 = moment('2022-01-01 12:00:00');
const start2 = moment('2022-01-01 10:00:00');
const end2 = moment('2022-01-01 14:00:00');
```
2. 然后使用 moment 的 intersect 方法获取两个时间段的交集,例如:
```
const intersection = start1.intersect(end1, start2, end2);
```
3. 最后将交集转换为字符串输出即可:
```
console.log(intersection.format('YYYY-MM-DD HH:mm:ss'));
```
如果有多个时间段需要比较,可以使用循环遍历的方式依次获取它们的交集,最终得到所有时间段的共有时间段。
相关问题
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'
}
]
```
用vue获取多个时间段的交集
可以使用 moment.js 和 lodash 库来实现获取多个时间段的交集。具体代码如下:
```javascript
import moment from 'moment';
import _ from 'lodash';
const timeRanges = [
{ start: '2022-01-01 08:00:00', end: '2022-01-01 12:00:00' },
{ start: '2022-01-01 10:00:00', end: '2022-01-01 14:00:00' },
{ start: '2022-01-01 11:00:00', end: '2022-01-01 15:00:00' },
];
const startTimes = timeRanges.map(range => moment(range.start));
const endTimes = timeRanges.map(range => moment(range.end));
const maxStartTime = moment.max(startTimes);
const minEndTime = moment.min(endTimes);
if (maxStartTime.isBefore(minEndTime)) {
const intersection = {
start: maxStartTime.format('YYYY-MM-DD HH:mm:ss'),
end: minEndTime.format('YYYY-MM-DD HH:mm:ss'),
};
console.log('交集为:', intersection);
} else {
console.log('没有交集');
}
```
这段代码可以获取多个时间段的交集,并输出交集的起始时间和结束时间。
阅读全文