javascript date格式化有五种方式:1.原生手动拼接(需补零和月+1);2.tolocaledatestring/time/string(自动本地化);3.intl.datetimeformat(推荐,支持时区和复用);4.date-fns;5.dayjs。

JavaScript 的 Date 对象本身不提供直接的格式化方法,但有多种实用方式实现时间格式化输出,关键看需求场景:是简单拼接、国际化显示,还是高精度控制。
用原生方法手动拼接(适合基础格式)
通过 getFullYear()、getMonth()、getDate() 等方法获取数值,再补零拼接:
-
getMonth()返回 0–11,需 +1;getDate()和getHours()等返回值不自动补零,要用String(n).padStart(2, '0') - 例如输出
2024-05-20 14:08:32:
const y = d.getFullYear();
const m = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
const h = String(d.getHours()).padStart(2, '0');
const min = String(d.getMinutes()).padStart(2, '0');
const s = String(d.getSeconds()).padStart(2, '0');
console.log(`${y}-${m}-${day} ${h}:${min}:${s}`);
用 toLocaleString() 系列方法(适合本地化显示)
浏览器自动按用户系统语言/时区格式化,省心且支持多语言:
-
toLocaleDateString():只输出日期,如"2024/5/20"(中文系统)或"5/20/2024"(美式) -
toLocaleTimeString():只输出时间,如"下午 2:08:32" -
toLocaleString():日期+时间,可传入配置对象精细控制,例如:
console.log(d.toLocaleString('zh-CN')); // 中文格式:"2024/5/20 下午2:08:32"
console.log(d.toLocaleString('en-US', {
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit'
})); // "05/20/2024, 02:08:32 PM"
用 Intl.DateTimeFormat(推荐用于生产环境)
这是最标准、最灵活的国际化方案,性能好、可控性强,支持时区、数字样式等:
- 创建一次实例可复用,避免重复解析配置
- 支持显式指定时区(如
timeZone: 'Asia/Shanghai'),解决客户端时区偏差问题 - 示例:生成 ISO 风格但带中文星期的格式
year: 'numeric',
month: '2-digit',
day: '2-digit',
weekday: 'short',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
});
console.log(formatter.format(new Date())); // "周一, 2024/05/20 14:08:32"
第三方库(如 date-fns 或 dayjs)
若项目已引入轻量工具库,格式化会更简洁:
-
date-fns:函数式、tree-shakable,例如format(new Date(), 'yyyy-MM-dd HH:mm:ss') -
dayjs:链式调用,体积小,例如dayjs().format('YYYY-MM-DD HH:mm:ss') - 注意:仅在需要大量复杂操作(相对时间、区间处理)时才建议引入,简单格式化优先用原生
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











