uniapp计算时间差
计算时间差的方法
在UniApp中计算时间差可以通过JavaScript的Date对象实现,以下是几种常见场景的解决方案:

计算两个日期之间的天数差
const date1 = new Date('2023-01-01');
const date2 = new Date('2023-01-10');
const diffTime = Math.abs(date2 - date1);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
console.log(diffDays); // 输出9
计算时分秒差
function getTimeDiff(start, end) {
const diff = Math.abs(new Date(end) - new Date(start));
const hours = Math.floor(diff / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((diff % (1000 * 60)) / 1000);
return { hours, minutes, seconds };
}
计算倒计时
// 假设目标时间是2023-12-31 23:59:59
function countDown() {
const now = new Date();
const target = new Date('2023-12-31 23:59:59');
const diff = target - now;
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 { days, hours, minutes, seconds };
}
格式化时间差显示
function formatTimeDiff(diff) {
if (diff < 0) return '已过期';
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));
let result = [];
if (days > 0) result.push(`${days}天`);
if (hours > 0) result.push(`${hours}小时`);
if (minutes > 0) result.push(`${minutes}分钟`);
return result.join('') || '不足1分钟';
}
注意事项
- 时区问题可能导致计算误差,建议使用UTC时间或明确指定时区
- 大跨度时间计算要考虑闰年等因素
- 性能敏感场景应避免频繁创建Date对象
- 移动端注意iOS对日期字符串格式的特殊要求
以上方法可根据实际需求调整,核心逻辑都是通过Date对象获取时间戳后做数学运算。






