html正则日期格式,JS日期格式化--正则

//采用正则格式化日期

functiondateFormat(fmt, date) {

let ret;

let opt={"Y+": date.getFullYear().toString(), //年

"m+": (date.getMonth() + 1).toString(), //月

"d+": date.getDate().toString(), //日

"H+": date.getHours().toString(), //时

"M+": date.getMinutes().toString(), //分

"S+": date.getSeconds().toString() //秒

//有其他格式化字符需求可以继续添加,必须转化成字符串

};for (let k inopt) {

let reg = new RegExp("(" + k + ")");

ret = reg.exec(fmt);

console.log(reg);

console.log(ret);

if(ret) {

fmt= fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))

};

};returnfmt;

}

通过验证,如下图:

1120b589801e7c3f0873859cb940ea99.png

exec方法匹配失败返回null,成功返回了数组对象。

80c429841223417485c89c39ace33921.png

通过加断点采用test方法时,成功返回true,失败返回false。

RegExp

无论采用哪种方式都可以使用RegExp对象,

91ce038eafd3240cd599f7fe891876ab.png

如果成功RegExp.$1返回匹配到的字符串,比如/(m+)/匹配到mm。$0 $2都会返回"",空字符串。

ef08336f208812eb623d5d5ecc675581.png

padStart

padStart(len,str) :该方法用于补全字符串

len:补全长度

str:补充的字符串,使用这个字符串补充。

fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))

解释:

fmt: yyyy-mm-dd HH:MM:SS

ret:每一次匹配的结果,比如匹配到mm,ret[1] = mm,ret[1].length = 2,表示日期格式月份的长度应该是2,此时

(ret[1].length == 1) ?不成立,执行

opt[k].padStart(ret[1].length, "0")),

opt[k]是月份值,如果月份长度不是月份格式长度,表示此时月份小于10,要对月份数据用 0 进行补全,否则不用补全。

原文:https://www.cnblogs.com/hzozj/p/11770126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值