JavaScript日期对象格式化为字符串的实现方法

作者:工具松鼠时间:2026-10-27 21:27:32浏览:202

本文介绍了一种在JavaScript中通过正则表达式拆分日期模板并替换为实际值的自定义日期格式化方案。该方法支持年月日时分秒及毫秒,允许任意分隔符,并可扩展星期显示或月份英文缩写。通过formatDate函数实现灵活的日期字符串生成,满足常见开发需求。

JavaScript日期格式化方案概述

JavaScript内置的日期格式化功能较为基础,通常难以满足复杂的应用场景,因此往往需要开发者自行实现格式化逻辑。下面介绍一种经过设计的格式化方案,旨在覆盖大多数日常使用需求。该方案支持在日期模板中使用任意分隔符,甚至允许将文字作为分隔符,同时也兼容如yyyyMMdd这类无分隔符的紧凑格式。

该实现包含两个核心函数,代码可直接复制运行。

功能扩展与配置

扩展方式如下:

示例代码目前仅支持年月日、时分秒及毫秒元素。若需显示星期,可在values对象中添加w = getDay(),并将正则表达式修改为y+|M+|d+|H+|m+|s+|S+|w+|[^yMdHmsSw]/g,以匹配星期元素。

若需将月份或星期显示为全拼或简拼英文形式,可在配置对象cfg中增加相应映射。此处仅提供一个示例配置,用户可根据实际需求自行扩展。

使用示例与代码实现

具体使用方式如下:

var date = new Date(); var str = formatDate(date, 'yyyy年MMM月dd日'); 则str的值为2012年七月29日

代码如下:

/** 
* 格式化整数
* @param number:number 要格式化的整数
* @param fmt:string 整数格式
*/ 
function formatNumber(number, fmt) {
number = number + '';
if (fmt.length > number.length) {
return fmt.substring(number.length) + number;
} 
return number;
} 
/** 
* 格式化日期为字符串表示 
* @param datetime:Date 要格式化的日期对象 
* @param format:String 日期格式 
*/ 
function formatDate(datetime, format) { 
var cfg = { 
MMM : ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'], 
MMMM : ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'] 
}, 
values = { 
y : datetime.getFullYear(), 
M : datetime.getMonth(), 
d : datetime.getDate(), 
H : datetime.getHours(), 
m : datetime.getMinutes(), 
s : datetime.getSeconds(), 
S : datetime.getMilliseconds() 
}; 
/*用正则表达式拆分日期格式各个元素*/ 
var elems = format.match(/y+|M+|d+|H+|m+|s+|S+|[^yMdHmsS]/g); 
//将日期元素替换为实际的值 
for (var i = 0; i < elems.length; i++) { 
if (cfg[elems[i]]) { 
elems[i] = cfg[elems[i]][values[elems[i].charAt(0)]]; 
} else if (values[elems[i].charAt(0)]) { 
elems[i] = formatNumber(values[elems[i].charAt(0)], elems[i].replace(/./g, '0')); 
} 
}
return elems.join(''); 
}
作者最新文章