最常用且灵活的方式是 date.prototype.tolocalestring() 及其配套方法;toisostring() 用于获取标准 iso 格式(utc 时间);手动拼接简单但易错;intl.datetimeformat 适合高频、多语言场景。

JavaScript 中把日期对象转为可读字符串,最常用也最灵活的方式是用 Date.prototype.toLocaleString() 及其配套方法,而不是直接 toString() 或 toUTCString() —— 后者格式固定、本地化支持弱。
用 toLocaleString() 精确控制语言和格式
这个方法能按用户所在地区或指定 locale 输出易读的字符串,还能自定义年月日、时分秒的显示方式:
-
默认调用(使用系统本地设置):
new Date().toLocaleString()→"2024/6/12 14:35:22"(中文系统下常见) -
指定中文简体、带星期:
new Date().toLocaleString('zh-CN', { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })→"星期三 2024年6月12日 下午2:35" -
英文美式(无星期):
new Date().toLocaleString('en-US', { dateStyle: 'medium', timeStyle: 'short' })→"Jun 12, 2024, 2:35 PM"
用 toISOString() 获取标准 ISO 格式(适合传输和存储)
如果需要机器可读、时区明确的字符串(如 API 通信、数据库写入),用 toISOString():
- 它总是返回 UTC 时间的 ISO 8601 字符串:
new Date().toISOString()→"2024-06-12T06:35:22.123Z" - 注意:它不反映本地时区,而是把本地时间换算成 UTC 后输出,末尾带
Z表示零时区 - 如只要日期部分,可截取:
new Date().toISOString().slice(0, 10)→"2024-06-12"
手动拼接(简单场景够用,但不推荐长期维护)
对格式要求极简(比如只想要 “2024-06-12”),可用 getFullYear()、getMonth()+1 等组合:
const d = new Date();`${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`- 结果:
"2024-06-12" - 缺点:没处理时区、没本地化、月份要 +1、补零要手动,容易出错
用 Intl.DateTimeFormat(高级定制,性能好,适合大量格式化)
如果项目中需频繁、多样化地格式化日期(比如多语言后台),建议用 Intl.DateTimeFormat 实例复用:
const formatter = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'full', timeStyle: 'medium' });-
formatter.format(new Date())→"2024年6月12日星期三 下午2:35:22" - 比反复调用 toLocaleString() 更高效,尤其在循环中
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











