JS 时间格式化插件
本文连接:http://blog.csdn.net/tomorrow13210073213/article/details/68491007
转载请注明出处
- 需求背景
javascript功能越来越强大,所能完成的任务也越来越复杂;但Date对象一直没有提供格式化的方法,由于项目中需要用到很多时间格式化,所以自己写了个小插件; - 思路
部分代码来自网络,这里只是将代码做了一下规范,定义成插件的方式; - 插件定义
(function(win) {
function _util() {
this.date_fmt = function(fmt, date) {
if (!date) { date = new Date(); }
var o = { "M+" : date.getMonth() + 1, // 月份 "d+" : date.getDate(), // 日 "h+" : date.getHours(), // 小时 "m+" : date.getMinutes(), // 分 "s+" : date.getSeconds(), // 秒 "q+" : Math.floor((date.getMonth() + 3) / 3), // 季度 "S" : date.getMilliseconds() // 毫秒 };
if (/(y+)/.test(fmt)){ fmt = fmt.replace(RegExp.$1, (date.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;
}
this.datetime = function(date) {
if (!date) { date = new Date(); }
return $util.date_fmt("yyyy-MM-dd hh:mm:ss", date);
};
this.date = function(date) {
if (!date) { date = new Date(); }
return $util.date_fmt("yyyy-MM-dd", date);
};
this.time = function(date) {
if (!date) { date = new Date(); }
return $util.date_fmt("hh:mm:ss", date);
};
}
var $util = new _util();
win.$util = $util;
})(window);
代码很简单,不做赘述,请看测试;
* 测试
$util.date();
"2017-03-30"
$util.time();
"17:54:33"
$util.datetime();
"2017-03-30 17:54:51"
$util.date_fmt("yyyy-MM-dd hh:mm:ss");
"2017-03-30 17:55:42"
以上测试代码没有指定要格式化的时间,插件默认采用系统当前时间;
var t_date = new Date(1490161815967);
$util.date(t_date );
"2017-03-22"
var t_date = new Date(1490161815967);
$util.time(t_date);
"13:50:15"
var t_date = new Date(1490161815967);
$util.datetime(t_date);
"2017-03-22 13:50:15"
var t_date = new Date(1490161815967);
$util.date_fmt("yyyy-MM-dd hh:mm:ss",t_date);
"2017-03-22 13:50:15"
以上代码指定了要格式化的时间;
代码片段中会有些不太规范或不太优雅的写法,还请诸君不吝指证;