JavaScript Date对象完全指南
编程小白也能轻松掌握日期和时间操作
当前时间: 正在加载…
Date对象是什么?
Date对象是JavaScript中处理日期和时间的内置对象。
就像现实中的日历和时钟一样,Date对象可以表示任何时间点(年月日时分秒)。
主要功能:
- 获取当前日期和时间
- 创建特定的日期
- 计算日期差
- 格式化日期为字符串
- 日期比较
💡 提示:JavaScript中的日期是基于UNIX时间戳的,即自1970年1月1日午夜(UTC)以来经过的毫秒数
创建Date对象
1. 获取当前日期和时间
let now = new Date();
console.log(now); // 输出当前日期和时间
console.log(now); // 输出当前日期和时间
2. 创建特定日期
传入年月日(时间可选):
// 2023年10月1日
let nationalDay = new Date(2023, 9, 1);
// 注意:月份是从0开始的,0=一月,11=十二月
let nationalDay = new Date(2023, 9, 1);
// 注意:月份是从0开始的,0=一月,11=十二月
3. 使用日期字符串
let christmas = new Date(“2023-12-25”);
let newYear = new Date(“January 1, 2024”);
let newYear = new Date(“January 1, 2024”);
️ 注意:不同浏览器对日期字符串的解析可能不同,建议使用数字方式创建日期
获取日期的各个部分
Date对象提供多种方法获取日期时间各部分:
年份相关
let date = new Date();
let year = date.getFullYear(); // 2023
let month = date.getMonth(); // 0-11 (0=一月)
let day = date.getDate(); // 1-31
let year = date.getFullYear(); // 2023
let month = date.getMonth(); // 0-11 (0=一月)
let day = date.getDate(); // 1-31
时间相关
let hours = date.getHours(); // 0-23
let minutes = date.getMinutes();
let seconds = date.getSeconds();
let milliseconds = date.getMilliseconds();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
let milliseconds = date.getMilliseconds();
星期几
let dayOfWeek = date.getDay(); // 0-6 (0=星期日, 1=星期一)
时间戳
let timestamp = date.getTime();
// 返回自1970年1月1日 00:00:00 UTC以来的毫秒数
// 返回自1970年1月1日 00:00:00 UTC以来的毫秒数
设置/修改日期
Date对象也提供设置日期时间的方法:
设置日期各部分
let date = new Date();
date.setFullYear(2024);
date.setMonth(11); // 设置为12月 (0-11)
date.setDate(31); // 设置为31号
date.setHours(12); // 设置为中午12点
date.setMinutes(30);
date.setSeconds(0);
date.setFullYear(2024);
date.setMonth(11); // 设置为12月 (0-11)
date.setDate(31); // 设置为31号
date.setHours(12); // 设置为中午12点
date.setMinutes(30);
date.setSeconds(0);
日期计算
通过获取和设置组合实现日期计算:
// 计算10天后的日期
let date = new Date();
date.setDate(date.getDate() + 10);
let date = new Date();
date.setDate(date.getDate() + 10);
💡 小技巧:JavaScript会自动处理日期溢出(如设置32号会自动变为下个月1号)
格式化日期
内置方法提供基本格式化:
常用格式化方法
let date = new Date();
date.toString();
// “Thu Oct 05 2023 14:30:00 GMT+0800”
date.toDateString(); // “Thu Oct 05 2023”
date.toTimeString(); // “14:30:00 GMT+0800”
date.toLocaleDateString(); // “2023/10/5”
date.toLocaleTimeString(); // “下午2:30:00”
date.toISOString(); // “2023-10-05T06:30:00.000Z”
date.toString();
// “Thu Oct 05 2023 14:30:00 GMT+0800”
date.toDateString(); // “Thu Oct 05 2023”
date.toTimeString(); // “14:30:00 GMT+0800”
date.toLocaleDateString(); // “2023/10/5”
date.toLocaleTimeString(); // “下午2:30:00”
date.toISOString(); // “2023-10-05T06:30:00.000Z”
自定义格式化
通常需要自己构建格式:
function formatDate(date) {
return `${date.getFullYear()}-${
String(date.getMonth() + 1).padStart(2, ‘0’)}-${
String(date.getDate()).padStart(2, ‘0’)}`;
}
// 返回 “2023-10-05”
return `${date.getFullYear()}-${
String(date.getMonth() + 1).padStart(2, ‘0’)}-${
String(date.getDate()).padStart(2, ‘0’)}`;
}
// 返回 “2023-10-05”
注意事项与最佳实践
1. 时区问题
JavaScript日期运行在用户的浏览器中,使用用户的本地时区。
// 获取UTC时间
let utcHours = date.getUTCHours();
// 设置时区需要额外处理
let utcHours = date.getUTCHours();
// 设置时区需要额外处理
2. 月份从0开始
一月是0,十二月是11
3. 日期比较
直接比较Date对象:
let date1 = new Date(2023, 9, 1);
let date2 = new Date(2023, 9, 2);
if (date1 < date2) {
console.log(“date1在date2之前”);
}
let date2 = new Date(2023, 9, 2);
if (date1 < date2) {
console.log(“date1在date2之前”);
}
️ 重要:处理复杂日期逻辑时,建议使用专门的日期库(如date-fns、moment.js)
动手实验:日期操作练习
计算结果:
等待操作…