计算时间间隔
计算两个日期之间的差值。
基础计算
// 计算两个日期之间的毫秒差
function getTimeInterval(date1, date2) {
return Math.abs(date2.getTime() - date1.getTime());
}
// 计算天数差
function getDaysDiff(date1, date2) {
const msPerDay = 24 * 60 * 60 * 1000;
return Math.floor(Math.abs(date2.getTime() - date1.getTime()) / msPerDay);
}
详细时间间隔
function getTimeIntervalDetail(start, end) {
const diff = end.getTime() - start.getTime();
const absDiff = Math.abs(diff);
const days = Math.floor(absDiff / (1000 * 60 * 60 * 24));
const hours = Math.floor((absDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((absDiff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((absDiff % (1000 * 60)) / 1000);
return {
days,
hours,
minutes,
seconds,
totalMilliseconds: absDiff,
isFuture: diff > 0
};
}
// 使用
const start = new Date('2024-01-01');
const end = new Date('2024-12-31');
const result = getTimeIntervalDetail(start, end);
console.log(`相差 ${result.days} 天 ${result.hours} 小时 ${result.minutes} 分钟`);
倒计时/剩余时间
function getCountdown(targetDate) {
const now = new Date();
const diff = targetDate.getTime() - now.getTime();
if (diff <= 0) {
return { expired: true, message: '已过期' };
}
const days = Math.floor(diff / (1000 * 60 * 60 * 24));
const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((diff % (1000 * 60)) / 1000);
return {
expired: false,
days,
hours,
minutes,
seconds,
formatted: `${days}天${hours}小时${minutes}分钟${seconds}秒`
};
}