登录
首页 >  文章 >  前端

JavaScript日期格式化方法详解

时间:2026-01-29 15:56:32 259浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习文章的朋友们,也希望在阅读本文《JavaScript日期格式化操作教程》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新文章相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

Date对象无内置格式化方法;toISOString()恒返UTC时间;toLocaleString()需精确配置locale与options;getMonth()返回0–11需+1;手动格式化须区分本地/UTC时区。

javascript日期对象如何操作_如何格式化日期和时间【教程】

JavaScript 的 Date 对象本身不提供内置的格式化方法,直接调用 toString()toDateString() 得到的是本地时区、固定格式、不可控的字符串——这不是你想要的“格式化”,只是默认输出。

为什么 new Date().toISOString() 返回的是 UTC 时间?

这是最容易误解的一点:toISOString() 总是把时间转成 UTC(协调世界时),然后以 YYYY-MM-DDTHH:mm:ss.sssZ 格式返回。它不读取系统时区,也不受 toLocaleString() 设置影响。

  • 如果你在东八区执行 new Date("2024-05-20T12:00:00"),再调 .toISOString(),结果是 "2024-05-20T04:00:00.000Z"(自动减 8 小时)
  • 想保留原始输入的本地时间并转 ISO 字符串?得先用 getFullYear()getMonth() 等手动拼接,或用 toLocaleString("sv-SE") 借助地区规则模拟
  • toISOString()Z 后缀明确表示 UTC,别把它当本地时间用

toLocaleString() 的 locale 和 options 参数怎么配才靠谱?

这个方法最灵活,但参数稍不注意就出错。关键不是“选个语言”,而是明确你要什么字段、要不要补零、用不用 12/24 小时制。

  • 中文简写日期: date.toLocaleString("zh-CN", { year: "numeric", month: "short", day: "numeric" })"2024年5月20日"
  • 带秒的英文完整时间: date.toLocaleString("en-US", { hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" })"14:30:45"
  • 月份和日期不补零?加 month: "2-digit"day: "2-digit";想让 5月May?换 month: "short""long"
  • 注意:某些旧 Android WebView 不支持 hour12: false,若需兼容,优先用 hourCycle: "h23"

手写 format 函数时,getMonth() 为什么总差一个月?

getMonth() 返回的是 0~11,不是 1~12。这是 JavaScript 里最经典的“索引陷阱”,几乎每个初学者都踩过。

  • 错误写法:date.getMonth() + 1 没问题,但如果你漏了 +1,或者在条件判断里直接拿 getMonth() === 12,那就永远进不去分支
  • 更安全的做法是封装一个 pad(num) 辅助函数,统一处理补零和偏移:
    function pad(n) { return n < 10 ? "0" + n : String(n); }<br>const m = date.getMonth() + 1;<br>return `${date.getFullYear()}-${pad(m)}-${pad(date.getDate())}`;
  • 别依赖 date.toString().slice(4, 15) 截字符串——不同浏览器返回的空格数、缩写长度可能不同(比如 "Mon May 20" vs "Mon May 20"

真正难的不是拼出某个格式,而是搞清你操作的是本地时间、UTC 时间,还是某个指定时区的时间。浏览器里没有原生的 date.format("yyyy-MM-dd HH:mm"),是因为标准拒绝为“看起来方便”牺牲语义准确性——一旦你开始混用 getHours()getUTCHours(),或者在跨时区场景下没显式转换,bug 就藏在毫秒级偏差里。

本篇关于《JavaScript日期格式化方法详解》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>