JS时间格式转化,获取前十天,后十天,前n天,后n天的具体时间方法

JS时间转化,获取前十天,后十天,前n天,后n天的具体时间方法

1.参数说明:
参数说明
day前后n天 0为当天,正值表示未来n天,负值表示过去n天
fmt时间转化的格式
time传入时间,默认为当前时间
function recentTime(day,fmt,time){ 
	//获取当前时间的毫秒值
	let now = (time? new Date(time) :new Date()).getTime();
	// 获取前后n天时间
	let recent = new Date(now+day*24*60*60*1000)
	
	// key:正则匹配表达式,value:对应的时间、日期
	let fmtObj = {
		'M+': recent.getMonth()+1, 		//月份
		'd+': recent.getDate(),  		//日
		'h+': recent.getHours(), 		//时
		'm+': recent.getMinutes(),		//分
		's+': recent.getSeconds(),		//秒
	}
	// 获取匹配年份替换
	if(/(y+)/.test(fmt)){
		//RegExp.$1 匹配结果,替换成对应的长度。如:yyyy就替换成整个年份2021,yy就替换成后两位21,以此类推
		fmt = fmt.replace(RegExp.$1,(recent.getFullYear()+'').substr(4-RegExp.$1.length))
	}
	for(let key in fmtObj){
		if(new RegExp(`(${key})`).test(fmt)){
			//日期,时、分、秒替换,判断fmt是否需要补0,如:yyyy-M-d h:m:s 不补0,yyyy-MM-dd hh:mm:ss 则自动补0
			fmt = fmt.replace(RegExp.$1,RegExp.$1.length==1 ? fmtObj[key] : ('00'+fmtObj[key]).substr((''+fmtObj[key]).length))
		}
	}
	return fmt
}
2.调用
recentTime(1,'yyyy-MM-dd hh:mm:ss','2022-01-03 00:00:00')
// 2022-01-04 00:00:00
recentTime(0,'yyyy-M-d','2021-04-06')
// 2021-04-06
recentTime(-1,'yyyy-MM-dd hh:mm:ss','2021-04-06 13:52:05')
// 2021-04-05 13:52:05
recentTime(2,'yyyy-MM-dd','2021-04-06 13:52:05')
// 2021-04-08
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值