Skip to content

Latest commit

 

History

History
69 lines (55 loc) · 1.69 KB

js日期格式转换的几种方法探讨.md

File metadata and controls

69 lines (55 loc) · 1.69 KB
title date tags
js日期格式转换的几种方法探讨
2017-08-22 16:21:49 -0700
JavaScript

提出问题: 如何将 2017年8月22日 转换成 2017-8-22 / 2017-08-22呢

'2017年8月22日'.replace(/[]/g,'-');

'2017年8月22日'.match(/\d+/g).join('-')
'2017年8月22日'.replace(/[]/g,'-').replace('日','');

点评 第一种形式 返回的是

 2017-8-22-
 //这时我们可以通过字符串截取来处理
 '2017年8月22日'.replace(/[]/g,'-').slice(0,-1);

上面日期 如果小于10,补0 ,则需要用如下方法

'2017年8月22日'.match(/\d+/g).map(n => +n < 10 ? '0'+n : n).join('-')

function format( str ) {
    var result = /^(\d+)(\d+)(\d+)$/.exec(str)
    if( result ) {
        var y = result[ 1 ];
        var m = result[ 2 ];
        var d = result[ 3 ];
        m = Number( m ) < 10 ? '0' + m : m;
        d = Number( d ) < 10 ? '0' + d : d;
        return y + '-' + m + '-' + d;
    }
    return null;
}
console.log(format( '2017年8月22日'))
'2017年8月22日'.match(/\d{1,4}/g).join('-').replace(/\d+/g, function(d) {
   return (d.length > 1)? d : ('0' + d);
})
     
'2017年8月22日'.replace(/(\d+)/, function(_d, d) {
   return (d.length == 2)? ('-' + d) : ('-0' + d);
}).replace(/(\d+)/, function(_m, m) {
   return (m.length == 2)? ('-' + m) : ('-0' + m);
}).replace(/(\d+)/, function(_y, y) {
   return y;
})
     
'2017年8月22日'.replace(/(\d+)[,,]/g, function(_d,d) {
   return (d.length > 1) ? d.length == 4 ? d : ('-' + d) : ('-0' + d);
})

'2017年8月22日'.replace(/(\d{4})(\d{1,2})(\d{1,2})/, (a,b,c,d)=>{
   return `${b}-${c>9?c:'0'+c}-${d}`
 })