zl程序教程

您现在的位置是:首页 >  前端

当前栏目

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

JavaScript日期方法对象 实现 字符串 格式化
2023-06-13 09:15:15 时间

javascript提供的日期格式化太简单,一般应用都需要自己实现格式化方法.下面是我想出的一个格式化处理方案,应该是可以满足常用的需求.日期模板中可以使用任意分隔符,还可以使用文字作为分隔符,甚至支持类似yyyyMMdd之类没有分隔符的格式化.

原理:用正则表达式将日期模板中的日期元素[如yyyy,MM,dd]和分隔符拆分成数组,然后用实际的值替换日期元素形成日期字符串.

实现共有两个函数,粘贴可运行.

扩展方式:

示例中只支持了年月日时分秒毫秒的元素,如果需要显示星期则可以在values中添加w=getDay(),将正则表达式修改为y+|M+|d+|H+|m+|s+|S+|w+|[^yMdHmsSw]/g即可.

如果需要将月份或星期显示为全拼或简拼英文,可以在cfg中增加相应配置,我只在cfg中增加了一个示例

使用方式:

vardate=newDate();
varstr=formatDate(date,"yyyy年MMM月dd日");
则str的值为2012年七月29日

复制代码代码如下:

/**
*格式化整数
*@paramnumber:number要格式化的整数
*@paramfmt:string整数格式
*/
functionformatNumber(number,fmt){
number=number+"";
if(fmt.length>number.length){
returnfmt.substring(number.length)+number;
}
returnnumber;
}

/**
*格式化日期为字符串表示
*@paramdatetime:Date要格式化的日期对象
*@paramformat:String日期格式
*/
functionformatDate(datetime,format){
varcfg={
MMM:["一","二","三","四","五","六","七","八","九","十","十一","十二"],
MMMM:["一","二","三","四","五","六","七","八","九","十","十一","十二"]
},
values={
y:datetime.getFullYear(),
M:datetime.getMonth(),
d:datetime.getDate(),
H:datetime.getHours(),
m:datetime.getMinutes(),
s:datetime.getSeconds(),
S:datetime.getMilliseconds()
};
/*用正则表达式拆分日期格式各个元素*/
varelems=format.match(/y+|M+|d+|H+|m+|s+|S+|[^yMdHmsS]/g);
//将日期元素替换为实际的值
for(vari=0;i<elems.length;i++){
if(cfg[elems[i]]){
elems[i]=cfg[elems[i]][values[elems[i].charAt(0)]];
}elseif(values[elems[i].charAt(0)]){
elems[i]=formatNumber(values[elems[i].charAt(0)],elems[i].replace(/./g,"0"));
}
}

returnelems.join("");
}