js格式化日期

知识点

1. 正则表达式

例:/y+/i:
y+ 表示匹配一个或多个 y 字符。
i 是一个修饰符,指示这个匹配是不区分大小写的。

2.test(format)

test() 方法用于测试字符串 format 是否包含与正则表达式匹配的部分。如果匹配成功,返回 true,否则返回 false。

3.replace()

例:format.replace(‘-’,‘月’)
是用于将匹配到的 - 字符替换为一个新的值’月‘。

4.RegExp

例:
RegExp.$1 是正则表达式中第一个捕获组的内容。在这种情况下,它指的是一个或多个连续的 字符。

5.substr()

例:str.substr(2,4) 截取字符串,从第2个开始到第4结束,若第2个参数没有,则截取到字符串的末尾

6.padStart()

例:
padStart(2, ‘0’)
用于在字符串的开头填充指定的字符,以达到指定的长度。
2 表示目标字符串的最小长度。
‘0’ 是用来填充的字符。

完整代码

function formatDateAuto(dt, format = 'yyyy-MM-dd HH:mm:ss'){ 
	let date = new Date(dt);
    let year = date.getFullYear();  
    let month = String(date.getMonth() + 1).padStart(2, '0');  
    let day = String(date.getDate()).padStart(2, '0');  
    let hour = String(date.getHours()).padStart(2, '0');  
    let minute = String(date.getMinutes()).padStart(2, '0');  
    let second = String(date.getSeconds()).padStart(2, '0');  
  
    let obj = {  
        'M+': month, // 月份  
        'd+': day, // 日  
        'h+': hour, // 小时  
        'm+': minute, // 分  
        's+': second, // 秒  
        // 'yyyy': year, // 年份  
        'MM': month,  
        'dd': day,  
        'HH': hour,  
        'mm': minute,  
        'ss': second  
    };  
		
		if(/(y+)/i.test(format)){
			console.log(RegExp.$1)
			format=format.replace(RegExp.$1,(date.getFullYear()+'').substr(4 - RegExp.$1.length))
		}
    for (let k in obj) {  
        if (new RegExp(`(${k})`).test(format)) {  
					// || RegExp.$1.length === 4
            format = format.replace(RegExp.$1, (RegExp.$1.length === 1 ) ? (obj[k]) : (('00' + obj[k]).substr(('' + obj[k]).length)));  
        }  
    } 
  
    return format;  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值