let timestamp = Date.now(); // 当前时间戳(毫秒)
let d4 = new Date(timestamp);
三、Date 常用方法
1. 获取时间信息
方法
描述
getFullYear()
获取年份(四位)
getMonth()
获取月份(0~11)
getDate()
获取日期(1~31)
getDay()
获取星期几(0=周日, 6=周六)
getHours()
获取小时(0~23)
getMinutes()
获取分钟(0~59)
getSeconds()
获取秒(0~59)
getMilliseconds()
获取毫秒(0~999)
getTime()
获取时间戳(毫秒)
getTimezoneOffset()
获取本地时区与 UTC 的差值(分钟)
let now = new Date();
console.log(now.getFullYear()); // 2025
console.log(now.getMonth()); // 10 (11月)
console.log(now.getDate()); // 29
console.log(now.getDay()); // 6 (周六)
2. 设置时间
方法
描述
setFullYear(year)
设置年份
setMonth(month)
设置月份(0~11)
setDate(day)
设置日期
setHours(hour)
设置小时
setMinutes(minute)
设置分钟
setSeconds(sec)
设置秒
setMilliseconds(ms)
设置毫秒
setTime(ms)
设置时间戳
let d = new Date();
d.setFullYear(2026);
d.setMonth(0); // 一月
d.setDate(1); // 1号
console.log(d); // 2026-01-01T...
3. 格式化日期
1. 内置方法
let now = new Date();
console.log(now.toString()); // Thu Nov 29 2025 16:15:00 GMT+0800 (CST)
console.log(now.toUTCString()); // Thu, 29 Nov 2025 08:15:00 GMT
console.log(now.toISOString()); // 2025-11-29T08:15:00.000Z
console.log(now.toDateString()); // Thu Nov 29 2025
console.log(now.toTimeString()); // 16:15:00 GMT+0800 (CST)
console.log(now.toLocaleString()); // 2025/11/29 16:15:00 (本地格式)
2. 自定义格式
let d = new Date();
let formatted = `${d.getFullYear()}-${d.getMonth()+1}-${d.getDate()} ${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`;
console.log(formatted); // 2025-11-29 16:15:0
4. 日期运算
1. 加减天数
let today = new Date();
let tomorrow = new Date(today.getTime() + 24*60*60*1000); // 加一天
2. 两个日期差值
let d1 = new Date("2025-12-01");
let d2 = new Date("2025-11-29");
let diffDays = (d1 - d2) / (1000*60*60*24); // 差值天数
console.log(diffDays); // 2
5. 常用技巧
获取时间戳(毫秒)
let timestamp = Date.now();
生成当前日期的 YYYY-MM-DD
function getTodayStr(){
let d = new Date();
return `${d.getFullYear()}-${d.getMonth()+1}-${d.getDate()}`;
}
判断闰年
function isLeapYear(year){
return (year%4===0 && year%100!==0) || (year%400===0);
}
6. 注意事项
月份从 0 开始
0 = 1月, 11 = 12月
常见 bug: new Date(2025, 11, 1) → 12月1日
Date 字符串解析兼容性
"YYYY-MM-DD" 在部分浏览器可能被解析为 UTC
推荐 "YYYY/MM/DD" 或 "YYYY-MM-DDTHH:mm:ss"
时区问题
getHours() 返回本地时间
getUTCHours() 返回 UTC 时间
注意跨时区运算
七、总结
创建日期:new Date() / 时间戳 / 字符串
获取/设置时间:getFullYear() / setDate() 等
格式化:内置 toISOString() 或自定义拼接
日期运算:毫秒 + 时间差 = 天数 / 小时 / 分钟
注意事项:月份从 0 开始,时区差异,字符串解析兼容性
好嘞,我给你做一张 JavaScript Date 使用速查表 + 可视化流程图,把创建、获取、设置、格式化、日期运算全都梳理清楚,一眼就能看懂。
flowchart TD
A[Date 对象] --> B[创建 Date]
B --> B1[new Date()]
B --> B2[new Date(timestamp)]
B --> B3[new Date("YYYY-MM-DD HH:MM:SS")]
B --> B4[new Date(year, monthIndex, day, ...)]
A --> C[获取时间信息]
C --> C1[getFullYear()]
C --> C2[getMonth()]
C --> C3[getDate()]
C --> C4[getDay()]
C --> C5[getHours()]
C --> C6[getMinutes()]
C --> C7[getSeconds()]
C --> C8[getMilliseconds()]
C --> C9[getTime()]
C --> C10[getTimezoneOffset()]
A --> D[设置时间]
D --> D1[setFullYear(year)]
D --> D2[setMonth(month)]
D --> D3[setDate(day)]
D --> D4[setHours(hour)]
D --> D5[setMinutes(minute)]
D --> D6[setSeconds(sec)]
D --> D7[setMilliseconds(ms)]
D --> D8[setTime(ms)]
A --> E[格式化日期]
E --> E1[toString()]
E --> E2[toUTCString()]
E --> E3[toISOString()]
E --> E4[toDateString()]
E --> E5[toTimeString()]
E --> E6[toLocaleString()]
E --> E7[自定义拼接 `${year}-${month}-${day}`]
A --> F[日期运算]
F --> F1[加减天数: getTime() + 24*60*60*1000]
F --> F2[日期差值: (d1 - d2) / (1000*60*60*24)]
A --> G[常用技巧]
G --> G1[获取时间戳: Date.now()]
G --> G2[判断闰年: isLeapYear(year)]
G --> G3[注意月份从0开始]
G --> G4[时区问题: getHours() vs getUTCHours()]
发表回复