js 数组中判断时间戳是不是一小时单位间隔的如果不是补齐完整24小时,比如 时间戳数组中存在5:00 6:00 补齐00点到23
时间: 2024-09-13 16:13:58 浏览: 41
在JavaScript中,要判断数组中的时间戳是否按照一小时单位间隔排列,并补齐不足24小时的时间戳,可以按照以下步骤进行:
1. 首先确定时间戳数组的起始时间和结束时间。
2. 然后根据起始时间和结束时间确定需要补齐的时间戳序列。
3. 遍历时间戳数组,检查每个时间戳是否符合一小时间隔的规则。
4. 如果发现不符合规则的时间戳,则进行补齐操作,即添加缺失的小时数对应的时间戳。
以下是一个示例代码:
```javascript
function normalizeTimestampArray(timestampArray) {
// 将时间戳转换为Date对象,然后格式化为HH:00:00:00的形式
function formatTime(time) {
let date = new Date(time);
let hours = date.getHours().toString().padStart(2, '0');
return new Date(date.setDate(date.getDate()) - date.getTimezoneOffset() * 60000 + hours * 60 * 60 * 1000).getTime();
}
// 获取数组中的最小时间和最大时间
let minTime = Math.min(...timestampArray.map(formatTime));
let maxTime = Math.max(...timestampArray.map(formatTime));
// 计算需要补齐的时间戳序列
let result = [];
let currentTime = minTime;
while (currentTime <= maxTime) {
result.push(currentTime);
// 每小时增加60分钟*60秒*1000毫秒
currentTime += 60 * 60 * 1000;
}
// 检查并补齐缺失的时间戳
let filteredResult = timestampArray.filter(time => {
let formattedTime = formatTime(time);
if (result.includes(formattedTime)) {
return true;
} else {
result.push(formattedTime);
return false;
}
});
// 返回去重后的时间戳数组
return [...new Set(filteredResult)].sort((a, b) => a - b);
}
// 示例使用
let timestamps = [new Date('2023-03-01T05:00:00Z').getTime(), new Date('2023-03-01T06:00:00Z').getTime()];
let normalizedTimestamps = normalizeTimestampArray(timestamps);
console.log(normalizedTimestamps);
```
这段代码首先定义了一个`formatTime`函数,用于将时间戳转换为HH:00:00:00格式的Date对象。然后,计算出需要补齐的时间戳序列,并检查原数组中的时间戳,缺失的则进行补齐。最后,返回一个去重后并按时间顺序排序的时间戳数组。
阅读全文