Z
ZHANK
实用技能

日期与时间

学习 Date 对象、Intl 国际化、时间戳

日期与时间

JavaScript 的 Date 对象处理一切与时间相关的操作。

学完本章你将: 掌握 Date 对象、Intl 国际化、时间戳。


创建日期

javascript
// 当前时间
let now = new Date();
console.log(now); // 2024-06-15T10:30:00.000Z

// 指定日期
let date1 = new Date("2024-06-15");
let date2 = new Date("2024-06-15T10:30:00");
let date3 = new Date(2024, 5, 15);  // 月份从 0 开始!6月=5
let date4 = new Date(2024, 5, 15, 10, 30, 0);

// 时间戳(毫秒)
let timestamp = Date.now();
console.log(timestamp); // 1718448600000
let fromTimestamp = new Date(timestamp);

获取与设置

javascript
let d = new Date("2024-06-15T10:30:45");

// 获取
console.log(d.getFullYear()); // 2024
console.log(d.getMonth());    // 5(0-11)
console.log(d.getDate());     // 15
console.log(d.getDay());      // 6(0=周日,6=周六)
console.log(d.getHours());    // 10
console.log(d.getMinutes());  // 30
console.log(d.getSeconds());  // 45

// 设置(返回时间戳)
d.setFullYear(2025);
d.setMonth(0); // 1月
d.setDate(1);

// 时间戳
console.log(d.getTime()); // 毫秒时间戳
console.log(d.valueOf()); // 同上

Intl 国际化

javascript
let date = new Date("2024-06-15");

// 格式化日期
console.log(new Intl.DateTimeFormat("zh-CN").format(date)); // "2024/6/15"
console.log(new Intl.DateTimeFormat("en-US").format(date)); // "6/15/2024"
console.log(new Intl.DateTimeFormat("ja-JP").format(date)); // "2024/6/15"

// 详细选项
let formatter = new Intl.DateTimeFormat("zh-CN", {
    year: "numeric",
    month: "long",
    day: "numeric",
    weekday: "long",
});
console.log(formatter.format(date)); // "2024年6月15日星期六"

// 相对时间
let rtf = new Intl.RelativeTimeFormat("zh-CN", { numeric: "auto" });
console.log(rtf.format(-3, "day"));  // "3天前"
console.log(rtf.format(1, "month"));  // "1个月后"

常用计算

javascript
// 日期差(天数)
let d1 = new Date("2024-06-01");
let d2 = new Date("2024-06-15");
let diffDays = (d2 - d1) / (1000 * 60 * 60 * 24);
console.log(diffDays); // 14

// 添加天数
function addDays(date, days) {
    let result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}
console.log(addDays(new Date("2024-06-15"), 30)); // 2024-07-15

// 比较日期
console.log(d1 < d2); // true