格式化日期的js(正则魅力)

 
/**
 * 时间对象的格式化;
 */
Date.prototype.format = function(format) { // ◆ 使用prototype定义原型方法
    /*
     * eg:format="YYYY-MM-dd hh:mm:ss";
     */
    var o = { // ◆ 键值对形式的数组。只能通过加强的for循环来迭代取值
        "M+" :this.getMonth() + 1, // month
        "d+" :this.getDate(), // day
        "h+" :this.getHours(), // hour
        "m+" :this.getMinutes(), // minute
        "s+" :this.getSeconds(), // second
        "q+" :Math.floor((this.getMonth() + 3) / 3), // quarter (季度)
        "S" :this.getMilliseconds()
    // millisecond (毫秒)
    }

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "") // ◆ RegExp.$1 : 取正则表达式中第一个分组匹配到的内容
                .substr(4 - RegExp.$1.length));
    }

    for ( var k in o) { // ◆ 加强的for循环。k为键值对数组o中的键,故o[k]为对应的值
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, 
                            RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));// ◆ 这里的逻辑很好
        }
    }
    return format;
}

 

 

看下面效果: 

格式化当前时间
 
 
 
需要星期的话,可以加上下面的代码
var week = {         
       "0" : "\u65e5",         // 日
       "1" : "\u4e00",         // 一
       "2" : "\u4e8c",         // 二
       "3" : "\u4e09",         // 三
       "4" : "\u56db",         // 四
       "5" : "\u4e94",         // 五
       "6" : "\u516d"       // 六
       };       
if(/(E+)/.test(format)){     
        format=format.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]);     
    }    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值