• 格式化日期的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()+""]);     
        }    
  • 相关阅读:
    request.json 打印中文乱码解决
    看懂项目代码需要掌握的技能 (java语言)
    jmeter响应断言通过,结果树中却显示红色
    nginx的upstream后端名称居然变成了请求的host了?
    基于QRcode创建和识别二维码的研究
    thinkphp访问mysql中文字段问题
    apache https访问配置
    如何获得bibitem格式的参考文献
    CSharp: Image Matting
    word2vec回顾
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/3426168.html
Copyright © 2020-2023  润新知