JavaScript 常用的扩展函数和方法
字符串相关扩展
- 字符串格式化
1
2
3
4
5
6String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (s, i) {
return args[i];
});
};
日期相关处理扩展
- 日期格式化字符串扩展
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24/**
* 日期格式化
* 例: new Date().format('yyyy-MM-dd hh:mm:ss.s') => "2017-08-24 16:15:40.693"
* @param fmt 格式化字符串
* @returns {*}
*/
Date.prototype.format = function (fmt) { //author: meizz
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;
}; - 计算两个日期之间的差值
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
48
49
50
51
52
53
54
55
56
57
58
59
60/**
* 获得时间差
* @param time 时间
* @param type 类型
* @returns {Number} 差值
*/
Date.prototype.diff = function (time, type) {
//作为除数的数字
var divNum = 1;
switch (type.toLowerCase()) {
case "second":
divNum = 1000;
break;
case "minute":
divNum = 1000 * 60;
break;
case "hour":
divNum = 1000 * 3600;
break;
case "day":
divNum = 1000 * 3600 * 24;
break;
default:
break;
}
return parseInt((this.getTime() - time.getTime()) / parseInt(divNum));
};
/**
* 获得相差秒数
* @param time 时间
* @returns {Number}
*/
Date.prototype.diffSecond = function (time) {
return this.diff(time, 'Second')
};
/**
* 获得相差分钟
* @param time 时间
* @returns {Number}
*/
Date.prototype.diffMinute = function (time) {
return this.diff(time, 'Minute')
};
/**
*
* 获得相差小时
* @param time 时间
* @returns {Number}
*/
Date.prototype.diffHour = function (time) {
return this.diff(time, 'Hour')
};
/**
* 获得相差日期
* @param time 时间
* @returns {Number}
*/
Date.prototype.diffDay = function (time) {
return this.diff(time, 'Day')
};
比较两个对象之间的差异
1 | var deepDiffMapper = function () { |