JavaScript 日期和时间处理完全指南

JavaScript 日期和时间处理完全指南

ru.javascript.info Современный учебник JavaScript ru.javascript.info 项目地址: https://gitcode.com/gh_mirrors/ru/ru.javascript.info

日期对象基础

在 JavaScript 中,Date 对象是处理日期和时间的主要方式。这个内置对象不仅存储日期和时间信息,还提供了丰富的方法来操作这些数据。

创建日期对象的四种方式

  1. 无参数创建:获取当前日期和时间

    let now = new Date();
    console.log(now); // 输出当前日期和时间
    
  2. 使用时间戳创建:时间戳是从 1970 年 1 月 1 日 UTC+0 开始经过的毫秒数

    let epoch = new Date(0); // 1970-01-01
    let nextDay = new Date(24 * 3600 * 1000); // 1970-01-02
    
  3. 解析日期字符串创建

    let date = new Date("2023-05-15");
    // 注意时区影响,结果可能因执行环境而异
    
  4. 使用组件创建(年、月、日等)

    let preciseDate = new Date(2023, 4, 15, 13, 30, 15, 500);
    // 注意月份从0开始,4表示五月
    

获取日期组件

JavaScript 提供了多种方法来获取日期对象的不同部分:

let date = new Date();

console.log(date.getFullYear()); // 四位数的年份
console.log(date.getMonth());    // 月份 (0-11)
console.log(date.getDate());     // 月份中的第几天 (1-31)
console.log(date.getHours());    // 小时 (0-23)
console.log(date.getMinutes());  // 分钟 (0-59)
console.log(date.getSeconds());  // 秒数 (0-59)
console.log(date.getMilliseconds()); // 毫秒 (0-999)
console.log(date.getDay());      // 星期几 (0-6),0是星期日

重要提示:避免使用过时的 getYear() 方法,始终使用 getFullYear()

设置日期组件

你可以修改日期对象的各个部分:

let date = new Date();

date.setFullYear(2024);
date.setMonth(11); // 设置为12月
date.setDate(25);  // 设置为25号
date.setHours(0, 0, 0, 0); // 设置为午夜

智能的自动修正

Date 对象的一个强大特性是自动修正:

let date = new Date(2023, 0, 32); // 1月32日?
console.log(date); // 自动修正为2月1日

这个特性在进行日期计算时特别有用:

let date = new Date(2023, 1, 28); // 2023年2月28日
date.setDate(date.getDate() + 2);  // 加2天
console.log(date); // 自动处理闰年,输出2023年3月2日

日期运算和比较

日期可以转换为数字(时间戳),这使得日期运算变得简单:

let date1 = new Date(2023, 0, 1);
let date2 = new Date(2023, 0, 2);

console.log(date2 - date1); // 输出86400000(一天的毫秒数)

高性能时间测量

对于需要频繁获取当前时间的场景,使用 Date.now() 比创建 Date 对象更高效:

let start = Date.now();

// 执行一些操作
for (let i = 0; i < 100000; i++) { /* ... */ }

let end = Date.now();
console.log(`耗时:${end - start}毫秒`);

日期字符串解析

Date.parse() 方法可以解析特定格式的日期字符串:

支持的格式:YYYY-MM-DDTHH:mm:ss.sssZ

  • YYYY-MM-DD:年月日
  • T:分隔符
  • HH:mm:ss.sss:时分秒毫秒
  • Z:时区(+hh:mm 或 -hh:mm)
let timestamp = Date.parse('2023-05-15T13:30:00.000+08:00');
console.log(new Date(timestamp));

最佳实践和注意事项

  1. 月份从0开始:一月是0,十二月是11

  2. 星期从0开始:0是星期日,6是星期六

  3. 时区敏感:大多数方法返回本地时区时间,使用UTC方法(如getUTCHours())获取UTC时间

  4. 性能考量

    • 优先使用 Date.now() 而非 new Date().getTime()
    • 进行性能测试时,注意多次运行取平均值
    • 考虑JavaScript引擎的优化机制
  5. 微秒级精度:在浏览器中可以使用 performance.now() 获取更高精度的时间测量

掌握这些日期和时间处理技术,你就能在JavaScript应用中高效地处理各种与时间相关的任务了。

ru.javascript.info Современный учебник JavaScript ru.javascript.info 项目地址: https://gitcode.com/gh_mirrors/ru/ru.javascript.info

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙典将Phyllis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值