JavaScript日期格式化方法详解
时间:2026-01-29 15:56:32 259浏览 收藏
“纵有疾风来,人生不言弃”,这句话送给正在学习文章的朋友们,也希望在阅读本文《JavaScript日期格式化操作教程》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新文章相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!
Date对象无内置格式化方法;toISOString()恒返UTC时间;toLocaleString()需精确配置locale与options;getMonth()返回0–11需+1;手动格式化须区分本地/UTC时区。

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学习网公众号!
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
375 收藏
-
293 收藏
-
360 收藏
-
367 收藏
-
401 收藏
-
295 收藏
-
442 收藏
-
448 收藏
-
488 收藏
-
363 收藏
-
377 收藏
-
400 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习