js日期格式化

重写了一个格式化日期的方法,支持把日期格式或时间戳按指定的格式输出,应该能满足大多数时候的需求。

说明

说明
y 年份的后2位
yy 4位数完整年份
m 月份
mm 月份小于10前补零
d
dd 日小于10前补零
h 小时
hh 小时小于10前补零
i 分钟
ii 分钟小于10前补零
s 秒钟
ss 秒钟小于10前补零

案例

formatDate("2017-02-23 12:09:12", "ymd");  //17223
formatDate("2017-02-23 12:09:12", "y年m月d日 h时i分s秒");  //17年2月23日 12时9分12秒
formatDate("1398200549", "yy-mm-dd");  //2014-04-23
formatDate("1398200549000", "y-m-d h:i:s");  //14-4-23 5:2:29
formatDate("1398200549000", "yy-mm-dd hh:ii:ss");  //2014-04-23 05:02:29
formatDate("1398200549000", "yy/mm/dd hh:i:s");  //2014/04/23 05:2:29
formatDate("1398200549000", "yy年m月d日 h时i分s秒");  //2014年4月23日 5时2分29秒

源代码如下

function formatDate(value, pattern) {
    var date = value.indexOf('-') >= 0 ? Date.parse(value) : value.length == 10 ? value * 1000 : value;
    date = new Date(parseInt(date));
    var YY  = date.getFullYear();
    var y  = YY.toString().substr(2);
    var m  = date.getMonth() + 1;
    var MM = m < 10 ? '0' + m : m;
    var d  = date.getDate();
    var DD = d < 10 ? '0' + d : d;
    var h  = date.getHours();
    var HH = h < 10 ? '0' + h : h;
    var i  = date.getMinutes();
    var II = i < 10 ? '0' + i : i;
    var s  = date.getSeconds();
    var SS = s < 10 ? '0' + s : s;
    var newdate;

    newdate = pattern.replace(/yy/g, YY).replace(/y/g, y);
    newdate = newdate.replace(/mm/g, MM).replace(/m/g, m);
    newdate = newdate.replace(/dd/g, DD).replace(/d/g, d);
    newdate = newdate.replace(/hh/g, HH).replace(/h/g, h);
    newdate = newdate.replace(/ii/g, II).replace(/i/g, i);
    newdate = newdate.replace(/ss/g, SS).replace(/s/g, s);

    return newdate ;
}

你可能感兴趣的:(js日期格式化)