我想要一个JS函数,共有4个参数分别为开始时间、截至时间、时间间隔和时间类型。时间类型为必传参数为小时,分种和秒。剩余三个参数必须输入两个,算出第三个。
时间: 2023-06-16 18:07:59 浏览: 37
可以尝试以下代码实现:
```javascript
function getTimeInterval(start, end, interval, type) {
// 将时间字符串转换为 Date 对象
const startDate = new Date(`1970-01-01T${start}`);
const endDate = new Date(`1970-01-01T${end}`);
// 计算时间差,单位为毫秒
const diff = endDate - startDate;
// 根据时间类型将时间差转换为对应的毫秒数
let typeMs;
switch (type) {
case 'hour':
typeMs = 1000 * 60 * 60;
break;
case 'minute':
typeMs = 1000 * 60;
break;
case 'second':
typeMs = 1000;
break;
default:
throw new Error('Invalid time type');
}
// 计算间隔数
let intervalCount;
if (typeof interval === 'number') {
intervalCount = interval;
} else {
intervalCount = Math.floor(diff / typeMs / interval);
}
// 根据时间类型计算间隔时间
let intervalMs;
switch (type) {
case 'hour':
intervalMs = intervalCount * 1000 * 60 * 60;
break;
case 'minute':
intervalMs = intervalCount * 1000 * 60;
break;
case 'second':
intervalMs = intervalCount * 1000;
break;
}
// 计算第三个参数
let third;
if (typeof interval === 'number') {
third = new Date(startDate.getTime() + intervalMs).toLocaleTimeString([], { hour12: false });
} else {
third = intervalCount;
}
return [intervalCount, intervalMs, third];
}
```
使用示例:
```javascript
// 计算每隔 30 分钟的时间间隔
const [count, ms, third] = getTimeInterval('09:00:00', '17:00:00', 30, 'minute');
console.log(`间隔数:${count},间隔时间:${ms} 毫秒,第三个参数:${third}`);
// 计算每隔 2 小时的时间间隔
const [count2, ms2, third2] = getTimeInterval('2022-01-01T09:00:00', '2022-01-02T09:00:00', '02:00:00', 'hour');
console.log(`间隔数:${count2},间隔时间:${ms2} 毫秒,第三个参数:${third2}`);
```