JavaScript Date对象可处理当前时间及任意时间点,支持创建、获取、设置、格式化等操作;需注意月份从0开始、时区影响及字符串解析兼容性。

JavaScript 用 Date 对象处理日期和时间,它既可以表示当前时间,也能解析、计算、格式化任意时间点。掌握核心方法就能应对大多数场景,不需要第三方库。
创建 Date 实例的几种常用方式
创建是第一步,不同写法对应不同需求:
- new Date():获取当前系统时间(精确到毫秒)
-
new Date('2024-05-20') 或 new Date('May 20, 2024 14:30'):解析字符串(注意格式兼容性,推荐 ISO 格式
YYYY-MM-DDTHH:mm:ss) - new Date(2024, 4, 20, 14, 30, 0):传入年、月(0 起始,5 月要写 4)、日、时、分、秒(毫秒可选)
- new Date(1716215400000):传入时间戳(毫秒数),常用于后端返回或存储
获取时间值的核心方法(get 开头)
这些方法返回数字,不修改原对象,适合提取信息:
- getFullYear():四位年份(如 2024)
- getMonth():月份(0–11,记得 +1 才是真实月份)
- getDate():当月第几天(1–31)
- getDay():星期几(0=周日,1=周一……)
- getHours() / getMinutes() / getSeconds() / getMilliseconds():分别获取时、分、秒、毫秒
- getTime():返回自 1970-01-01 00:00:00 UTC 起的毫秒数(即时间戳)
- valueOf():等价于 getTime(),可用于比较大小
设置时间值的方法(set 开头)
这些方法会直接修改原 Date 对象,返回新时间戳:
立即学习“Java免费学习笔记(深入)”;
-
setFullYear(2025, 0, 1):设年、月(0起始)、日;参数可省略,只设年就写
setFullYear(2025) - setMonth(5):设月份(6月写 5),自动处理跨月(如 1 月 31 日设为 1 月 → 3 月 3 日)
- setDate(15):设当月第几天,同样支持跨月计算
- setHours(10, 30, 0, 0):设时、分、秒、毫秒(后三项可选)
- setTime(1716215400000):用时间戳重置整个时间
格式化与转换的实用方法
面向用户显示时常用,多数返回字符串:
- toString():本地时区的完整字符串(含星期、时区、年月日时分秒)
- toDateString():只返回日期部分(如 "Mon May 20 2024")
- toTimeString():只返回时间部分(如 "14:30:00 GMT+0800 (CST)")
-
toISOString():返回标准 ISO 8601 字符串(UTC 时间,如
"2024-05-20T06:30:00.000Z"),适合 API 通信 -
toLocaleString():按本地语言/地区格式化(可传 locale 和 options 控制,比如
date.toLocaleString('zh-CN', { hour12: false })) - toJSON():内部调用 toISOString(),用于 JSON.stringify() 自动序列化
基本上就这些。Date 对象本身不复杂,但月份从 0 开始、时区隐含影响、字符串解析宽松又不稳定——这些细节容易忽略,实际用时多打个 log 看一眼值,比猜更靠谱。











