zoukankan      html  css  js  c++  java
  • 格式化日期的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 ? "u661fu671f" : "u5468") : "")+week[this.getDay()+""]);     
        }    
  • 相关阅读:
    结构体后面不加 ; 的后果。
    swap的两种错误写法
    rewind和fseek作用分析
    16个get函数的用法。
    枚举的简单使用。
    小知识点
    网线头的做法
    内存和寄存器
    linux下service mongod start启动报错
    appium上下文切换、webview调试以及chromedriver/键盘等报错问题解决
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/3426168.html
Copyright © 2011-2022 走看看