JavaScript Date对象基于毫秒时间戳,创建用new Date(),获取/设置方法对应年月日时分秒(注意月份0起始),set类方法修改原对象;格式化可用toJSON()/toLocaleString()等,比较直接用>或减法得毫秒差。
JavaScript 中的 Date 对象用来处理日期和时间,核心是“基于毫秒的时间戳”,所有方法都围绕这个展开。掌握几个关键方法,就能应对大部分日常需求。
用 new Date() 创建当前时间;也可传入字符串(如 "2025-05-20")、年月日参数(注意:月份从 0 开始!)、或时间戳(毫秒数)来创建指定时间。
常用获取方法:
getFullYear() —— 获取四位年份(推荐,不用 getYear())getMonth() —— 获取月份(0~11,记得 +1 才是真实月份)getDate() —— 获取当月第几天(1~31)
getDay() —— 获取星期几(0=周日,1=周一…)getHours() / getMinutes() / getSeconds() / getMilliseconds() —— 各级时间单位对应获取方法,都有以 set 开头的设置方法,比如:
setFullYear(2025)、setMonth(5)(6月)、setDate(15)
setHours(14, 30, 0) 可同时设时分秒setTime(1716212345000),最灵活也最底层注意:这些方法会**修改原 Date 对象**(不是返回新对象),适合需要复用同一实例的场景。
浏览器内置方法适合简单展示:
toString() —— 全信息字符串(含时区,可读但不规范)toDateString() —— 仅日期部分,如 "Mon May 20 2025"
toLocaleDateString("zh-CN") —— 中文本地化,支持选项控制年月日顺序toISOString() —— 返回标准 ISO 格式字符串(UTC 时间),如 "2025-05-20T08:30:00.000Z",常用于 API 通信想输出 "2025-05-20 14:30:00" 这类格式?建议手动拼接,用 padStart(2, '0') 补零更可控。
Date 对象可以直接用 >、 比较大小(本质是比时间戳):
date1 > date2 → 判断先后date2.getTime() - date1.getTime() → 得到毫秒差,再换算成天/小时等Math.floor((date2 - date1) / (1000 * 60 * 60 * 24))
注意:减法运算符会自动调用 valueOf(),返回时间戳,所以 date2 - date1 是合法且常用的写法。
基本上就这些。Date 对象不复杂,但容易忽略月份从 0 开始、时区影响、以及 set 方法会改变原对象这些细节。