JavaScript Date对象创建有四种方式:不传参(当前本地时间)、ISO字符串(推荐)、数值参数(月从0开始)、时间戳;获取值用getXXX()(本地时区)或getUTCXXX();setXXX()均原地修改;格式化可用toISOString()或toLocaleString();比较用>、

JavaScript 的 Date 对象是处理日期和时间的基础工具,但它的 API 设计略显原始,容易踩坑。掌握几个关键操作方式,就能覆盖大多数日常需求。
创建 Date 对象的常用方式
有多种方法可以初始化一个日期对象,选对方式能避免时区或解析错误:
-
不传参:创建当前系统时间(注意是本地时区)
new Date() -
传字符串:推荐使用 ISO 8601 格式(如
"2024-05-20"或"2024-05-20T10:30:00"),浏览器解析更可靠;避免用"05/20/2024"这类格式,不同环境可能解析为美式或欧式 -
传数值参数:按年、月(0 起始)、日、时、分、秒、毫秒顺序,例如
new Date(2024, 4, 20, 14, 30)表示 2024 年 5 月 20 日 14:30(注意月份是 0–11) -
传时间戳:毫秒数,从 1970-01-01 00:00:00 UTC 开始计算,例如
new Date(1716213000000)
获取日期各部分值(安全读取)
所有 getXXX() 方法都返回本地时区对应的值,若需 UTC 时间,请用 getUTCXXX() 系列:
-
date.getFullYear()— 获取四位年份(别用getYear(),已废弃) -
date.getMonth()— 返回 0–11,记得 +1 才是实际月份 -
date.getDate()— 返回当月第几天(1–31) -
date.getDay()— 返回星期几(0=周日,1=周一…) -
date.getHours()、getMinutes()、getSeconds()、getMilliseconds()
修改日期(注意是原地修改)
Date 对象所有 setXXX() 方法都会直接修改原对象,不是返回新实例:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
-
date.setDate(15)— 把日期设为当月 15 号(若超出范围会自动进位,比如 1 月 32 日 → 2 月 1 日) -
date.setMonth(2)— 设为 3 月(同样支持负数或超限值,如setMonth(-1)→ 去年 12 月) -
date.setTime(timestamp)— 直接重设为指定时间戳,最灵活的方式 - 如需“不变原对象”,先用
new Date(date)克隆再操作
格式化与比较的实用技巧
原生没有统一格式化方法,但有轻量替代方案:
-
date.toISOString()→ 返回 UTC 时间的 ISO 字符串(如"2024-05-20T06:30:00.000Z"),适合 API 通信 -
date.toLocaleDateString()和toLocaleTimeString()→ 按用户本地设置格式化,可传选项,例如:date.toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' }) - 比较两个日期:直接用
>、,因为Date转为原始值时会调用getTime(),返回时间戳
✅ 正确:date1 > date2
❌ 避免:date1 == date2(引用比较,永远 false;应比时间戳:date1.getTime() === date2.getTime())
不复杂但容易忽略细节,比如月份从 0 开始、字符串解析的歧义、以及所有 set 方法都是原地修改。用好这几个核心点,基本日期操作就稳了。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










