This commit is contained in:
2026-02-10 09:56:08 +08:00
commit d7802b25f2
147 changed files with 17439 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
export const formatDateTime = (date = new Date()) => {
// 确保传入的是 Date 对象
if (!(date instanceof Date)) {
date = new Date(date);
}
// 提取日期时间各部分
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
const timezoneOffset = -date.getTimezoneOffset();
const timezoneHours = String(Math.floor(Math.abs(timezoneOffset) / 60)).padStart(2, '0');
const timezoneMinutes = String(Math.abs(timezoneOffset) % 60).padStart(2, '0');
const timezoneSign = timezoneOffset >= 0 ? '+' : '-';
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
export const getTimeDifference = (time1, time2) => {
// 将时间字符串转换为 Date 对象
const date1 = new Date(time1);
const date2 = new Date(time2);
// 计算时间差(毫秒)
const diffMs = Math.abs(date2 - date1);
// 转换为分钟
const diffMinutes = Math.floor(diffMs / (1000 * 60));
// 计算小时和分钟
const hours = Math.floor(diffMinutes / 60);
const minutes = diffMinutes % 60;
// 确定时间差的方向
const direction = date2 > date1 ? "之后" : "之前";
return {
hours,
minutes,
totalMinutes: diffMinutes,
direction
};
}
/**
* 比较两个时间字符串(格式:HH:MM)
* @param {string} time1 - 第一个时间字符串,如 "14:00"
* @param {string} time2 - 第二个时间字符串,如 "15:00"
* @returns {number}
* -1: time1 在 time2 之前
* 0: time1 等于 time2
* 1: time1 在 time2 之后
* @throws {Error} 如果时间格式无效
*/
export function compareTimes(time1, time2) {
// 验证时间格式
const timeRegex = /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/;
if (!timeRegex.test(time1) || !timeRegex.test(time2)) {
throw new Error('时间格式无效,请使用 HH:MM 格式(24小时制)');
}
// 将时间字符串转换为分钟数进行比较
const timeToMinutes = (time) => {
const [hours, minutes] = time.split(':').map(Number);
return hours * 60 + minutes;
};
const minutes1 = timeToMinutes(time1);
const minutes2 = timeToMinutes(time2);
if (minutes1 < minutes2) return 1;
if (minutes1 > minutes2) return -1;
return 0;
}
// 数字转16进制字符串
export const numberToHex = (number) => {
return (number & 0xFF).toString(16).padStart(2, '0')
}
// 延迟执行
export const delay = (ms) =>{
return new Promise(resolve => setTimeout(resolve, ms));
}