JavaScript 中操作日期时间主要依靠 Date 对象,支持创建、获取、设置、计算、比较和格式化。创建方式包括 new Date()、解析字符串、传入数值参数或时间戳;获取/设置字段需注意月份和星期从 0 开始;相减得毫秒差,比较自动转时间戳;格式化推荐手动拼接以确保可控性。

JavaScript 中操作日期时间主要靠 Date 对象,它既能表示当前时间,也能解析、计算和格式化任意时间点。掌握常用方法就能应对大部分场景,不需要第三方库。
创建和获取时间
新建 Date 实例有多种方式:
- new Date():获取当前系统时间
- new Date('2024-05-20') 或 new Date('May 20, 2024 14:30'):解析字符串(注意兼容性,推荐 ISO 格式)
- new Date(2024, 4, 20, 14, 30):传入年、月(从 0 开始!)、日、时、分等数值(最可靠)
- new Date(1716215400000):传入毫秒时间戳(自 1970-01-01 UTC 起)
获取时间字段用 get 系列方法,比如:getDate()(当月几号)、getMonth()(0–11)、getFullYear()、getHours()、getMinutes() 等。注意月份和星期几(getDay() 返回 0 表示周日)都是从 0 开始的。
设置时间值
对应地,用 set 系列方法修改日期对象:
立即学习“Java免费学习笔记(深入)”;
- setDate(25):设为当月 25 号
- setMonth(5):设为 6 月(注意是 0 起始)
- setFullYear(2025, 0, 1):设为 2025 年 1 月 1 日(可一次设多个)
- setHours(10, 30, 0, 0):设为上午 10:30:00.000
所有 set 方法都会**直接修改原 Date 对象**,返回的是时间戳(毫秒数),不是新对象。
时间计算与比较
Date 对象可以直接用 - 运算符相减,结果是毫秒差:
- const diffMs = date2 - date1
- 换算成天:Math.floor(diffMs / (1000 * 60 * 60 * 24))
比较大小可用 >、,因为 Date 在数值上下文中会自动调用 valueOf() 返回时间戳。
想加减天数?先转毫秒,再加减后重新构造:
- new Date(date.getTime() + 7 * 24 * 60 * 60 * 1000) → 加 7 天
格式化输出
内置格式化方法简单但可控性低:
- toString():本地时区全格式(如 "Mon May 20 2024 14:30:00 GMT+0800")
- toISOString():标准 ISO 8601 字符串(UTC 时间,如 "2024-05-20T06:30:00.000Z")
- toLocaleString():按浏览器语言和地区格式化(可传 locale 和 options)
自定义格式推荐手动拼接,例如:
`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`










