日期格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| 'usestrict';
(function () { Date.prototype.format = function (fmt) { if (typeof(fmt) == "undefined") { fmt = "yyyy-MM-dd hh:mm:ss"; } var o = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S": this.getMilliseconds() }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); }
return fmt; };
Date.prototype.formatDay = function () { return this.format("yyyy-MM-dd"); };
Date.prototype.formatDay2 = function () { return this.format("yyyyMMddhhmmss"); };
})();
|
关于这个时间格式化代码,这段厉害就厉害在于,正则表达式应用的非常炉火纯青。尤其replace那一段,使用捕获括号匹配字符串并记住字符串,用$1
表示记住的第一个匹配对象,后面替换也很巧妙,设定好位数,然后字符串拼接,最重要的一步,再使用substr截取字符串,一般情况下我想的就是拼凑,先删都拼,比较好的做法是先拼后删。