跳转到主内容
极星编程网:以代码为星,赴技术山海!

JavaScript如何实现日期计算_怎样获取两个日期之间的差值

JavaScript中获取两日期差值的核心是转时间戳相减再换算:Date相减自动调用getTime()得毫秒差,除以对应系数可得天/小时/分钟;注意时区、闰年及月份天数不均,跨月跨年需手动逐级计算或用date-fns等库处理。 JavaScript 中获取两个日期之间的差值,核心是将日期转为时间戳(毫秒数),再做减法,最后按需换算成天、小时、分钟等单位。关键点在于注意时区、闰年、月份天数不均等细节,直接用
Date
对象相减即可得到毫秒差,无需第三方库。 用时间戳相减得到毫秒差 JavaScript 的
Date
对象在参与数值运算(如减法)时会自动调用
getTime()
,返回自 1970-01-01 00:00:00 UTC 起的毫秒数: 创建两个
Date
实例(支持字符串、时间戳、年月日参数等多种方式) 用大日期减小日期,结果为正数毫秒值;若顺序反了,结果为负,可取绝对值 例如:
new Date('2024-05-20') - new Date('2024-05-10')
返回
864000000
(10 天 × 24 × 60 × 60 × 1000) 换算成常用单位(天/小时/分钟) 毫秒值除以对应换算系数即可,注意使用
Math.floor
或
Math.round
控制精度: 天数:
Math.floor(diffMs / (1000 * 60 * 60 * 24))
小时数:
Math.floor(diffMs / (1000 * 60 * 60))
分钟数:
Math.floor(diffMs / (1000 * 60))
注意:这种计算是「总跨度」,不是自然日历差(比如 2024-01-01 到 2024-01-02 总是 1 天,不考虑具体时分秒) 处理跨月/跨年或需要日历级差值(如“X年Y月Z日”) 纯毫秒法无法直接得出“几个月零几天”,因为月份天数不固定。此时需手动逐级计算: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ Java免费学习笔记(深入) ”; 先比较年份,累加整年天数(注意闰年) 再比较月份,按实际天数累加(可用
new Date(year, month+1, 0).getDate()
获取当月天数) 最后处理剩余天数 更稳妥的做法是使用成熟库如
date-fns
的
differenceInCalendarDays
或
differenceInMonths
,避免自行实现的边界问题 注意事项和常见坑 实际开发中容易忽略以下几点: 日期字符串格式影响解析结果:
'2024-05-10'
是 UTC 时间,而
'2024/05/10'
按本地时区解析,可能导致意外的 1 天偏差 不要用
getDay()
(返回星期几)代替
getDate()
(返回当月第几天) 避免直接比较
Date
对象是否相等(
==
或
===
比较的是引用),应比时间戳:
d1.getTime() === d2.getTime()
如果只关心日期(忽略时分秒),建议统一设为当天 0 点:
date.setHours(0,0,0,0)

相关文章