时间格式转化(字符串时间相互转化)

时间格式转化(字符串时间相互转化)

1.字符串转字符串

log("将指定字符串由一种时间格式转化为另一种")
function dateStrForma(str, from, to){
    //'20190626' 'YYYYMMDD' 'YYYY年MM月DD日'
    str += ''
    let Y = ''
    if(~(Y = from.indexOf('YYYY'))){
        Y = str.substr(Y, 4)
        to = to.replace(/YYYY|yyyy/g,Y)
    }else if(~(Y = from.indexOf('YY'))){
        Y = str.substr(Y, 2)
        to = to.replace(/YY|yy/g,Y)
    }

    let k,i
    ['M','D','d','H','h','m','S','s',].forEach(s =>{
        i = from.indexOf(s+s)
        k = ~i ? str.substr(i, 2) : ''
        to = to.replace(s+s, k)
    })
    return to
}
log(dateStrForma("19年","YY年","YY"));//19
log(dateStrForma("19","YY年","YY年"));//19年
log(dateStrForma("2019年","YYYY年","YYYY"));//2019
log(dateStrForma("2019","YYYY","YYYY年"))//2019年
log(dateStrForma("201912","YYYYMM","YYYY年MM月"));//2019年12月
log(dateStrForma("2019年12月","YYYY年MM月","YYYYMM"));//201912
log(dateStrForma("2019-12","YYYY-MM","YYYY年MM月"));//2019年12月
log(dateStrForma("2019,12,12","YYYY,MM,dd","YYYY年MM月dd日"));//2019年12月12日
log(dateStrForma("2019月12日12121212","YYYY月MM日DDHHmmss","YYYY-MM-DD HH:mm:ss"));//2019-12-12 12:12:12
log(dateStrForma("2019月12日1288881288881212","YYYY月MM日DD----HH----mmss","YYYY-MM-DD HH:mm:ss"));//2019-12-12 12:12:12
  1. 字符串转日期
log(纯数字字符串转时间);
function tot(t){
    if(/^[0-9]+$/.test(t)){
		if(t.length == 6){
			t = t.slice(0,4)+ "/" + t.slice(4,6);
		}else if(t.length == 8){
			t = t.slice(0,4)+ "/" + t.slice(4,6) + "/" + t.slice(6,8);
		}else if(t.length == 10){
			t = t.slice(0,4)+ "/" + t.slice(4,6) + "/" + t.slice(6,8) + " " +t.slice(8,10) + ":00:00";
		}else if(t.length == 12){
			t = t.slice(0,4)+ "/" + t.slice(4,6) + "/" + t.slice(6,8) + " " +t.slice(8,10) + ":" + t.slice(10,12) + ":00";
		}else{
			t = t.slice(0,4)+ "/" + t.slice(4,6) + "/" + t.slice(6,8) + " " +t.slice(8,10) + ":" + t.slice(10,12) + ":" + t.slice(12,14);
		}
	}
    return new Date(t);
}
log(tot("19"));//Invalid Date   不支持
log(tot("2019"));//Tue Jan 01 2019 00:00:00 GMT+0800 (中国标准时间)
log(tot("201912"));//Sun Dec 01 2019 00:00:00 GMT+0800 (中国标准时间)
log(tot("20191212"));//Thu Dec 12 2019 00:00:00 GMT+0800 (中国标准时间)
log(tot("2019121212"));//Thu Dec 12 2019 12:00:00 GMT+0800 (中国标准时间)
log(tot("201912121221"));//Thu Dec 12 2019 12:21:00 GMT+0800 (中国标准时间)
log(tot("20191212012359"));//Thu Dec 12 2019 01:23:59 GMT+0800 (中国标准时间)
log(tot("2019121212085959"));//Thu Dec 12 2019 12:08:59 GMT+0800 (中国标准时间)

3.字符串->时间->字符串 (运用到上面的2方法)

function dateFormater(formater, t){
	let date = t ? tot(t) : new Date(),
        Y = date.getFullYear() + '',
        M = date.getMonth() + 1,
        D = date.getDate(),
        H = date.getHours(),
        m = date.getMinutes(),
        s = date.getSeconds();
    return formater.replace(/YYYY|yyyy/g,Y)
        .replace(/YY|yy/g,Y.substr(2,2))
        .replace(/MM/g,(M<10?'0':'') + M)
        .replace(/DD|dd/g,(D<10?'0':'') + D)
        .replace(/HH|hh/g,(H<10?'0':'') + H)
        .replace(/mm/g,(m<10?'0':'') + m)
        .replace(/ss/g,(s<10?'0':'') + s)
}
log(dateFormater("YY","2017"));//17
log(dateFormater("YYYY","2017"));//2017
log(dateFormater("YYYYMM","201712"));//201712
log(dateFormater("YYYY-MM","201712"));//2017-12
log(dateFormater("YYYY-MM/dd","20171010"));//2017-10/10
log(dateFormater("YYYY/MM/ddHHmmss","2017-10-10 12:22:32"));//2017/10/10122232
log(dateFormater("YYYY-MMddHHmmss","2017/10/01 12:22:32"));//2017-1001122232
log(dateFormater("yyyy-MMddHHmmss","2001,12,12 12:22:32"));//2001-1212122232
log(dateFormater("yyyyMMddHHmmss","2001/01/02 12:22:32"));//20010102122232
log(dateFormater("yyyy/MM/dd HH:mm:ss","20190102122232"))//2019/01/02 12:22:32
发布了46 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_33327325/article/details/103510452