|
|
|
|
|
// timePointUtils.js
|
|
|
|
|
|
class TimePointUtils {
|
|
|
|
|
|
constructor() {
|
|
|
|
|
|
this.timePoints = this.generateTimePoints();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 生成时间点数组,格式如下:[{"HHmm":"0000","package":0},{"HHmm":"0005","package":1},{"HHmm":"0010","package":2},...]
|
|
|
|
|
|
generateTimePoints() {
|
|
|
|
|
|
const points = [];
|
|
|
|
|
|
for (let hour = 0; hour < 24; hour++) {
|
|
|
|
|
|
for (let minute = 0; minute < 60; minute += 5) {
|
|
|
|
|
|
const hh = hour.toString().padStart(2, '0');
|
|
|
|
|
|
const mm = minute.toString().padStart(2, '0');
|
|
|
|
|
|
const packageNum = hour * 12 + minute / 5;
|
|
|
|
|
|
points.push({
|
|
|
|
|
|
HHmm: hh + mm,
|
|
|
|
|
|
package: packageNum
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return points;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 通过HHmm获取package编号
|
|
|
|
|
|
getPackageByHHmm(hhmm) {
|
|
|
|
|
|
if (!/^([0-1][0-9]|2[0-3])([0-5][0-9])$/.test(hhmm)) {
|
|
|
|
|
|
console.error('Invalid HHmm format, should be like "0000", "2355"');
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const point = this.timePoints.find(item => item.HHmm === hhmm);
|
|
|
|
|
|
return point ? point.package : null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 通过package编号获取HHmm
|
|
|
|
|
|
getHHmmByPackage(packageNum) {
|
|
|
|
|
|
if (packageNum < 0 || packageNum > 287 || !Number.isInteger(packageNum)) {
|
|
|
|
|
|
console.error('Invalid package number, should be integer between 0 and 287');
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const point = this.timePoints.find(item => item.package === packageNum);
|
|
|
|
|
|
return point ? point.HHmm : null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 从yyyy-MM-dd-HH-mm格式的时间字符串中提取HHmm部分
|
|
|
|
|
|
* @param {string} datetime - 格式为"yyyy-MM-dd-HH-mm"的时间字符串,例如"2025-06-27-10-40"
|
|
|
|
|
|
* @returns {string} 返回HHmm格式的时间字符串,例如"1040"
|
|
|
|
|
|
*/
|
|
|
|
|
|
getHHmmFromDateTime(datetime) {
|
|
|
|
|
|
// 验证输入格式
|
|
|
|
|
|
if (!/^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}$/.test(datetime)) {
|
|
|
|
|
|
console.error('Invalid datetime format, should be "yyyy-MM-dd-HH-mm"');
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 分割字符串获取小时和分钟部分
|
|
|
|
|
|
const parts = datetime.split('-');
|
|
|
|
|
|
const hours = parts[3]; // 小时部分
|
|
|
|
|
|
const minutes = parts[4]; // 分钟部分
|
|
|
|
|
|
|
|
|
|
|
|
// 组合成HHmm格式
|
|
|
|
|
|
return hours + minutes;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
// 导出单例
|
|
|
|
|
|
const timePointUtils = new TimePointUtils();
|
|
|
|
|
|
export default timePointUtils;
|