@haluo/util 1.0.32 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +33 -36
- package/dist/modules/cookie/index.js +54 -54
- package/dist/modules/date/index.js +192 -192
- package/dist/modules/dom/index.js +62 -62
- package/dist/modules/filter/index.js +44 -57
- package/dist/modules/format/index.js +21 -21
- package/dist/modules/match/index.js +31 -31
- package/dist/modules/monitor/index.js +17 -17
- package/dist/modules/monitor/lib/jsError.js +53 -61
- package/dist/modules/monitor/lib/timing.js +69 -69
- package/dist/modules/monitor/lib/xhr.js +48 -50
- package/dist/modules/monitor/utils/onload.js +11 -11
- package/dist/modules/monitor/utils/tracker.js +63 -84
- package/dist/modules/number/index.js +102 -102
- package/dist/modules/sentry/index.js +81 -78
- package/dist/modules/tools/index.js +393 -393
- package/package.json +4 -4
- package/publish.sh +0 -0
- package/src/index.ts +3 -6
- package/src/modules/filter/index.ts +0 -14
- package/src/modules/monitor/lib/jsError.ts +10 -10
- package/src/modules/monitor/lib/xhr.ts +1 -3
- package/src/modules/monitor/utils/tracker.ts +1 -15
- package/src/modules/sentry/index.ts +7 -4
- package/dist/index.cjs.js +0 -89
- package/dist/index.d.ts +0 -12
- package/dist/index.esm.js +0 -87
- package/dist/lib-list.d.ts +0 -2
- package/dist/modules/cookie/index.d.ts +0 -27
- package/dist/modules/date/index.d.ts +0 -1
- package/dist/modules/dom/index.d.ts +0 -1
- package/dist/modules/filter/index.d.ts +0 -26
- package/dist/modules/format/index.d.ts +0 -13
- package/dist/modules/match/index.d.ts +0 -1
- package/dist/modules/number/index.d.ts +0 -39
- package/dist/modules/sentry/index.d.ts +0 -15
- package/dist/modules/tools/index.d.ts +0 -1
- package/yarn-error.log +0 -9316
package/dist/index.js
CHANGED
|
@@ -1,36 +1,33 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @Author: wanghui
|
|
3
|
-
* createBy: @2020.05.21
|
|
4
|
-
*/
|
|
5
|
-
'use strict';
|
|
6
|
-
var modules = {
|
|
7
|
-
cookie: require('./modules/cookie'),
|
|
8
|
-
date: require('./modules/date'),
|
|
9
|
-
dom: require('./modules/dom'),
|
|
10
|
-
filter: require('./modules/filter'),
|
|
11
|
-
format: require('./modules/format'),
|
|
12
|
-
match: require('./modules/match'),
|
|
13
|
-
number: require('./modules/number'),
|
|
14
|
-
tools: require('./modules/tools'),
|
|
15
|
-
};
|
|
16
|
-
var Utils = /** @class */ (function () {
|
|
17
|
-
function Utils() {
|
|
18
|
-
Object.assign(this, modules);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* 挂载各组件
|
|
22
|
-
* 示例:this.$cookie、this.$date、this.$match、this.$number、this.$tools
|
|
23
|
-
* @param {Object} Vue 需要挂载的目标对象
|
|
24
|
-
*/
|
|
25
|
-
Utils.prototype.install = function (
|
|
26
|
-
Object.keys(modules).forEach(function (key) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return Utils;
|
|
35
|
-
}());
|
|
36
|
-
module.exports = new Utils();
|
|
1
|
+
/**
|
|
2
|
+
* @Author: wanghui
|
|
3
|
+
* createBy: @2020.05.21
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
var modules = {
|
|
7
|
+
cookie: require('./modules/cookie'),
|
|
8
|
+
date: require('./modules/date'),
|
|
9
|
+
dom: require('./modules/dom'),
|
|
10
|
+
filter: require('./modules/filter'),
|
|
11
|
+
format: require('./modules/format'),
|
|
12
|
+
match: require('./modules/match'),
|
|
13
|
+
number: require('./modules/number'),
|
|
14
|
+
tools: require('./modules/tools'),
|
|
15
|
+
};
|
|
16
|
+
var Utils = /** @class */ (function () {
|
|
17
|
+
function Utils() {
|
|
18
|
+
Object.assign(this, modules);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 挂载各组件
|
|
22
|
+
* 示例:this.$cookie、this.$date、this.$match、this.$number、this.$tools
|
|
23
|
+
* @param {Object} Vue 需要挂载的目标对象
|
|
24
|
+
*/
|
|
25
|
+
Utils.prototype.install = function (app) {
|
|
26
|
+
Object.keys(modules).forEach(function (key) {
|
|
27
|
+
var globalProperties = app.config.globalProperties;
|
|
28
|
+
globalProperties['$' + key] = modules[key];
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
return Utils;
|
|
32
|
+
}());
|
|
33
|
+
module.exports = new Utils();
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Cookie
|
|
3
|
-
* @Author: wanghui
|
|
4
|
-
* @createBy: @2021.01.21
|
|
5
|
-
*/
|
|
6
|
-
'use strict';
|
|
7
|
-
var CookieClass = /** @class */ (function () {
|
|
8
|
-
function CookieClass() {
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* 获取cookie
|
|
12
|
-
* @param {String} name
|
|
13
|
-
* @return {String}
|
|
14
|
-
*/
|
|
15
|
-
CookieClass.prototype.getCookie = function (name) {
|
|
16
|
-
var _name = name + '=';
|
|
17
|
-
var ca = document.cookie.split(';');
|
|
18
|
-
for (var i = 0; i < ca.length; i++) {
|
|
19
|
-
var c = ca[i];
|
|
20
|
-
while (c.charAt(0) === ' ')
|
|
21
|
-
c = c.substring(1);
|
|
22
|
-
if (c.includes(_name))
|
|
23
|
-
return c.substring(_name.length, c.length);
|
|
24
|
-
}
|
|
25
|
-
return '';
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* 设置cookie
|
|
29
|
-
* @param {Object} ICookie
|
|
30
|
-
*/
|
|
31
|
-
CookieClass.prototype.setCookie = function (_a) {
|
|
32
|
-
var _b = _a.name, name = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c, _d = _a.exdays, exdays = _d === void 0 ? -1 : _d, _e = _a.path, path = _e === void 0 ? '/' : _e, _f = _a.domain, domain = _f === void 0 ? '.jddmoto.com' : _f;
|
|
33
|
-
var d = new Date();
|
|
34
|
-
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
|
|
35
|
-
var expires = "expires="
|
|
36
|
-
document.cookie = name
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* 清除Cookie
|
|
40
|
-
* @param {String} name
|
|
41
|
-
*/
|
|
42
|
-
CookieClass.prototype.clearCookie = function (_a) {
|
|
43
|
-
var _b = _a.name, name = _b === void 0 ? '' : _b, _c = _a.path, path = _c === void 0 ? '/' : _c, _d = _a.domain, domain = _d === void 0 ? '.jddmoto.com' : _d;
|
|
44
|
-
this.setCookie({
|
|
45
|
-
name: name,
|
|
46
|
-
value: '',
|
|
47
|
-
exdays: -1,
|
|
48
|
-
path: path,
|
|
49
|
-
domain: domain
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
return CookieClass;
|
|
53
|
-
}());
|
|
54
|
-
module.exports = new CookieClass();
|
|
1
|
+
/**
|
|
2
|
+
* @file Cookie
|
|
3
|
+
* @Author: wanghui
|
|
4
|
+
* @createBy: @2021.01.21
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
var CookieClass = /** @class */ (function () {
|
|
8
|
+
function CookieClass() {
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 获取cookie
|
|
12
|
+
* @param {String} name
|
|
13
|
+
* @return {String}
|
|
14
|
+
*/
|
|
15
|
+
CookieClass.prototype.getCookie = function (name) {
|
|
16
|
+
var _name = name + '=';
|
|
17
|
+
var ca = document.cookie.split(';');
|
|
18
|
+
for (var i = 0; i < ca.length; i++) {
|
|
19
|
+
var c = ca[i];
|
|
20
|
+
while (c.charAt(0) === ' ')
|
|
21
|
+
c = c.substring(1);
|
|
22
|
+
if (c.includes(_name))
|
|
23
|
+
return c.substring(_name.length, c.length);
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* 设置cookie
|
|
29
|
+
* @param {Object} ICookie
|
|
30
|
+
*/
|
|
31
|
+
CookieClass.prototype.setCookie = function (_a) {
|
|
32
|
+
var _b = _a.name, name = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c, _d = _a.exdays, exdays = _d === void 0 ? -1 : _d, _e = _a.path, path = _e === void 0 ? '/' : _e, _f = _a.domain, domain = _f === void 0 ? '.jddmoto.com' : _f;
|
|
33
|
+
var d = new Date();
|
|
34
|
+
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
|
|
35
|
+
var expires = "expires=".concat(d.toUTCString());
|
|
36
|
+
document.cookie = "".concat(name, "=").concat(value, ";").concat(expires, ";path=").concat(path, ";domain=").concat(domain, ";");
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 清除Cookie
|
|
40
|
+
* @param {String} name
|
|
41
|
+
*/
|
|
42
|
+
CookieClass.prototype.clearCookie = function (_a) {
|
|
43
|
+
var _b = _a.name, name = _b === void 0 ? '' : _b, _c = _a.path, path = _c === void 0 ? '/' : _c, _d = _a.domain, domain = _d === void 0 ? '.jddmoto.com' : _d;
|
|
44
|
+
this.setCookie({
|
|
45
|
+
name: name,
|
|
46
|
+
value: '',
|
|
47
|
+
exdays: -1,
|
|
48
|
+
path: path,
|
|
49
|
+
domain: domain
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
return CookieClass;
|
|
53
|
+
}());
|
|
54
|
+
module.exports = new CookieClass();
|
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file date 格式化
|
|
3
|
-
* @Author: wanghui
|
|
4
|
-
* @createBy: @2020.05.21
|
|
5
|
-
*/
|
|
6
|
-
'use strict';
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
/**
|
|
9
|
-
* 格式化时间 详情内容里的时间格式
|
|
10
|
-
* @param {Object} data 格式,可参考format 中的o属性
|
|
11
|
-
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
12
|
-
* @return 返回fmt 格式 时间
|
|
13
|
-
*/
|
|
14
|
-
function replacementDate(data, fmt) {
|
|
15
|
-
for (var k in data) {
|
|
16
|
-
if (new RegExp('(' + k + ')').test(fmt)) {
|
|
17
|
-
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (data[k]) : (("00"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return fmt;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 格式化年份
|
|
24
|
-
* @param {String} date Date 格式
|
|
25
|
-
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
26
|
-
* @return 仅返回年份
|
|
27
|
-
*/
|
|
28
|
-
function replacementYear(date, fmt) {
|
|
29
|
-
if (/(Y+)/.test(fmt)) {
|
|
30
|
-
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
31
|
-
}
|
|
32
|
-
return fmt;
|
|
33
|
-
}
|
|
34
|
-
var DateClass = /** @class */ (function () {
|
|
35
|
-
function DateClass() {
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 格式化时间
|
|
39
|
-
* @param {String|Number} date 需要格式化的时间 2017-11-11、2017/11/11、linux time
|
|
40
|
-
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
41
|
-
* date.format(new Date()) // 默认格式 'YYYY-MM-DD HH:mm:ss'
|
|
42
|
-
* date.format(1586840260500) // 默认格式,传参为linux时间
|
|
43
|
-
* date.format(new Date(), 'YYYY:MM:DD') // 自定义格式 'YYYY:MM:DD'
|
|
44
|
-
* @return {String} fmt 'YYYY-MM-DD HH:mm:ss'
|
|
45
|
-
*/
|
|
46
|
-
DateClass.prototype.format = function (date, fmt) {
|
|
47
|
-
if (fmt === void 0) { fmt = 'YYYY-MM-DD HH:mm:ss'; }
|
|
48
|
-
if (!date)
|
|
49
|
-
return '';
|
|
50
|
-
var timeData = typeof date === 'string' ? new Date(date.replace(/-/g, '/')) : date;
|
|
51
|
-
timeData = typeof date === 'number' ? new Date(date) : timeData;
|
|
52
|
-
var o = {
|
|
53
|
-
'M+': timeData.getMonth() + 1,
|
|
54
|
-
'D+': timeData.getDate(),
|
|
55
|
-
'h+': timeData.getHours() % 12 === 0 ? 12 : timeData.getHours() % 12,
|
|
56
|
-
'H+': timeData.getHours(),
|
|
57
|
-
'm+': timeData.getMinutes(),
|
|
58
|
-
's+': timeData.getSeconds(),
|
|
59
|
-
'q+': Math.floor((timeData.getMonth() + 3) / 3),
|
|
60
|
-
'S': timeData.getMilliseconds()
|
|
61
|
-
};
|
|
62
|
-
var week = {
|
|
63
|
-
'0': '\u65e5',
|
|
64
|
-
'1': '\u4e00',
|
|
65
|
-
'2': '\u4e8c',
|
|
66
|
-
'3': '\u4e09',
|
|
67
|
-
'4': '\u56db',
|
|
68
|
-
'5': '\u4e94',
|
|
69
|
-
'6': '\u516d'
|
|
70
|
-
};
|
|
71
|
-
fmt = replacementYear(timeData, fmt);
|
|
72
|
-
if (/(E+)/.test(fmt)) {
|
|
73
|
-
fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468') : '') + week[timeData.getDay()
|
|
74
|
-
}
|
|
75
|
-
return replacementDate(o, fmt);
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* 天数加减
|
|
79
|
-
* @param {string | Date} date 传入的时间 2020-10-15 or Date
|
|
80
|
-
* @param {String} days 天数
|
|
81
|
-
* addDaysToDate('2020-10-15', 10) // '2020-10-25'
|
|
82
|
-
* addDaysToDate('2020-10-15', -10) // '2020-10-05'
|
|
83
|
-
* @return {String} fmt 'YYYY-MM-DD'
|
|
84
|
-
*/
|
|
85
|
-
DateClass.prototype.addDaysToDate = function (date, days) {
|
|
86
|
-
var d = typeof date === 'object' ? date : new Date(date);
|
|
87
|
-
d.setDate(d.getDate() + days);
|
|
88
|
-
return d.toISOString().split('T')[0];
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* 获取倒计时剩余时间
|
|
92
|
-
* @param {Date | Number} endTime 截止时间
|
|
93
|
-
* @param {Date | Number} startTime 开始时间,默认取客户端当前时间
|
|
94
|
-
* date.format(new Date()) // 返回 {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
95
|
-
* date.format(1586840260500) // 返回 {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
96
|
-
* @return {object | boolean} {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
97
|
-
*/
|
|
98
|
-
DateClass.prototype.remainTime = function (endTime, startTime) {
|
|
99
|
-
if (startTime === void 0) { startTime = new Date(); }
|
|
100
|
-
var ts = Number(endTime) - Number(startTime); // 计算剩余的毫秒数
|
|
101
|
-
var dd = Math.floor(ts / 1000 / 60 / 60 / 24); // 计算剩余的天数
|
|
102
|
-
var hh = Math.floor(ts / 1000 / 60 / 60 % 24); // 计算剩余的小时数
|
|
103
|
-
var mm = Math.floor(ts / 1000 / 60 % 60); // 计算剩余的分钟数
|
|
104
|
-
var ss = Math.floor(ts / 1000 % 60); // 计算剩余的秒数
|
|
105
|
-
if (ts <= 0)
|
|
106
|
-
return false;
|
|
107
|
-
return {
|
|
108
|
-
dd: (dd < 10 ? "0"
|
|
109
|
-
hh: (hh < 10 ? "0"
|
|
110
|
-
mm: (mm < 10 ? "0"
|
|
111
|
-
ss: (ss < 10 ? "0"
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* 格式化现在的已过时间
|
|
116
|
-
* @param {Number} startTime
|
|
117
|
-
* @return {String} *年前 *个月前 *天前 *小时前 *分钟前 刚刚
|
|
118
|
-
*/
|
|
119
|
-
DateClass.prototype.formatPassTime = function (startTime) {
|
|
120
|
-
var currentTime = new Date();
|
|
121
|
-
var time = currentTime - startTime;
|
|
122
|
-
var year = Math.floor(time / (1000 * 60 * 60 * 24) / 30 / 12);
|
|
123
|
-
if (year)
|
|
124
|
-
return year
|
|
125
|
-
var month = Math.floor(time / (1000 * 60 * 60 * 24) / 30);
|
|
126
|
-
if (month)
|
|
127
|
-
return month
|
|
128
|
-
var day = Math.floor(time / (1000 * 60 * 60 * 24));
|
|
129
|
-
if (day)
|
|
130
|
-
return day
|
|
131
|
-
var hour = Math.floor(time / (1000 * 60 * 60));
|
|
132
|
-
if (hour)
|
|
133
|
-
return hour
|
|
134
|
-
var min = Math.floor(time / (1000 * 60));
|
|
135
|
-
if (min)
|
|
136
|
-
return min
|
|
137
|
-
else
|
|
138
|
-
return '刚刚';
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* 格式化时间 列表里的时间内容格式 待废弃,统一时间格式
|
|
142
|
-
* @param {Number} time 1494141000*1000
|
|
143
|
-
* @return {String} *年*月*日 *月*日 刚刚(1-60秒) 1-60分钟前 1-24小时前 1-3天前
|
|
144
|
-
*/
|
|
145
|
-
DateClass.prototype.formatPassTimeForList = function (time) {
|
|
146
|
-
return DateClass.prototype.formatPassTimeForDetail(time, 'YYYY年MM月DD日', true);
|
|
147
|
-
};
|
|
148
|
-
/**
|
|
149
|
-
* 格式化时间 详情内容里的时间格式
|
|
150
|
-
* @param {Number} time 1494141000*1000
|
|
151
|
-
* @param {String} fmt 想要格式化的格式
|
|
152
|
-
* @param {Boolean} noYear 是否显示年
|
|
153
|
-
* @return {String} *年*月*日 *月*日 刚刚(1-60秒) 1-60分钟前 1-24小时前 1-3天前
|
|
154
|
-
*/
|
|
155
|
-
DateClass.prototype.formatPassTimeForDetail = function (time, fmt, noYear) {
|
|
156
|
-
if (fmt === void 0) { fmt = 'YYYY-MM-DD'; }
|
|
157
|
-
var date = (typeof time === 'number') ? new Date(time) : new Date((time || '').replace(/-/g, '/'));
|
|
158
|
-
var diff = (((new Date()).getTime() - date.getTime()) / 1000);
|
|
159
|
-
var dayDiff = Math.floor(diff / 86400);
|
|
160
|
-
var isValidDate = Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());
|
|
161
|
-
if (!isValidDate)
|
|
162
|
-
return '';
|
|
163
|
-
var formatDate = function () {
|
|
164
|
-
var today = new Date(date);
|
|
165
|
-
var o = {
|
|
166
|
-
'Y+': today.getFullYear(),
|
|
167
|
-
'M+': ('0' + (today.getMonth() + 1)).slice(-2),
|
|
168
|
-
'D+': ('0' + today.getDate()).slice(-2)
|
|
169
|
-
};
|
|
170
|
-
fmt = replacementYear(date, fmt);
|
|
171
|
-
var year = today.getFullYear();
|
|
172
|
-
if (!(new Date().getFullYear() > year) && noYear) {
|
|
173
|
-
var backData = replacementDate(o, fmt);
|
|
174
|
-
return backData.split('年')[1];
|
|
175
|
-
}
|
|
176
|
-
return replacementDate(o, fmt);
|
|
177
|
-
};
|
|
178
|
-
if (dayDiff === -1) {
|
|
179
|
-
return '刚刚';
|
|
180
|
-
}
|
|
181
|
-
else if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 15) {
|
|
182
|
-
return formatDate();
|
|
183
|
-
}
|
|
184
|
-
return (dayDiff === 0 && ((diff < 60 && '刚刚') ||
|
|
185
|
-
(diff < 120 && '1分钟前') ||
|
|
186
|
-
(diff < 3600 && Math.floor(diff / 60) + '分钟前') ||
|
|
187
|
-
(diff < 7200 && '1小时前') ||
|
|
188
|
-
(diff < 86400 && Math.floor(diff / 3600) + '小时前'))) || (dayDiff < 16 && dayDiff + '天前');
|
|
189
|
-
};
|
|
190
|
-
return DateClass;
|
|
191
|
-
}());
|
|
192
|
-
module.exports = new DateClass();
|
|
1
|
+
/**
|
|
2
|
+
* @file date 格式化
|
|
3
|
+
* @Author: wanghui
|
|
4
|
+
* @createBy: @2020.05.21
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
/**
|
|
9
|
+
* 格式化时间 详情内容里的时间格式
|
|
10
|
+
* @param {Object} data 格式,可参考format 中的o属性
|
|
11
|
+
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
12
|
+
* @return 返回fmt 格式 时间
|
|
13
|
+
*/
|
|
14
|
+
function replacementDate(data, fmt) {
|
|
15
|
+
for (var k in data) {
|
|
16
|
+
if (new RegExp('(' + k + ')').test(fmt)) {
|
|
17
|
+
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (data[k]) : (("00".concat(data[k])).substr(('' + data[k]).length)));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return fmt;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 格式化年份
|
|
24
|
+
* @param {String} date Date 格式
|
|
25
|
+
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
26
|
+
* @return 仅返回年份
|
|
27
|
+
*/
|
|
28
|
+
function replacementYear(date, fmt) {
|
|
29
|
+
if (/(Y+)/.test(fmt)) {
|
|
30
|
+
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
31
|
+
}
|
|
32
|
+
return fmt;
|
|
33
|
+
}
|
|
34
|
+
var DateClass = /** @class */ (function () {
|
|
35
|
+
function DateClass() {
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 格式化时间
|
|
39
|
+
* @param {String|Number} date 需要格式化的时间 2017-11-11、2017/11/11、linux time
|
|
40
|
+
* @param {String} fmt 想要格式化的格式 'YYYY-MM-DD HH:mm:ss'、'YYYY-MM-DD'、'YYYY年MM月DD日 HH时mm分ss秒'、'YYYY年MM月DD日'
|
|
41
|
+
* date.format(new Date()) // 默认格式 'YYYY-MM-DD HH:mm:ss'
|
|
42
|
+
* date.format(1586840260500) // 默认格式,传参为linux时间
|
|
43
|
+
* date.format(new Date(), 'YYYY:MM:DD') // 自定义格式 'YYYY:MM:DD'
|
|
44
|
+
* @return {String} fmt 'YYYY-MM-DD HH:mm:ss'
|
|
45
|
+
*/
|
|
46
|
+
DateClass.prototype.format = function (date, fmt) {
|
|
47
|
+
if (fmt === void 0) { fmt = 'YYYY-MM-DD HH:mm:ss'; }
|
|
48
|
+
if (!date)
|
|
49
|
+
return '';
|
|
50
|
+
var timeData = typeof date === 'string' ? new Date(date.replace(/-/g, '/')) : date;
|
|
51
|
+
timeData = typeof date === 'number' ? new Date(date) : timeData;
|
|
52
|
+
var o = {
|
|
53
|
+
'M+': timeData.getMonth() + 1,
|
|
54
|
+
'D+': timeData.getDate(),
|
|
55
|
+
'h+': timeData.getHours() % 12 === 0 ? 12 : timeData.getHours() % 12,
|
|
56
|
+
'H+': timeData.getHours(),
|
|
57
|
+
'm+': timeData.getMinutes(),
|
|
58
|
+
's+': timeData.getSeconds(),
|
|
59
|
+
'q+': Math.floor((timeData.getMonth() + 3) / 3),
|
|
60
|
+
'S': timeData.getMilliseconds()
|
|
61
|
+
};
|
|
62
|
+
var week = {
|
|
63
|
+
'0': '\u65e5',
|
|
64
|
+
'1': '\u4e00',
|
|
65
|
+
'2': '\u4e8c',
|
|
66
|
+
'3': '\u4e09',
|
|
67
|
+
'4': '\u56db',
|
|
68
|
+
'5': '\u4e94',
|
|
69
|
+
'6': '\u516d'
|
|
70
|
+
};
|
|
71
|
+
fmt = replacementYear(timeData, fmt);
|
|
72
|
+
if (/(E+)/.test(fmt)) {
|
|
73
|
+
fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468') : '') + week["".concat(timeData.getDay(), " ")]);
|
|
74
|
+
}
|
|
75
|
+
return replacementDate(o, fmt);
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* 天数加减
|
|
79
|
+
* @param {string | Date} date 传入的时间 2020-10-15 or Date
|
|
80
|
+
* @param {String} days 天数
|
|
81
|
+
* addDaysToDate('2020-10-15', 10) // '2020-10-25'
|
|
82
|
+
* addDaysToDate('2020-10-15', -10) // '2020-10-05'
|
|
83
|
+
* @return {String} fmt 'YYYY-MM-DD'
|
|
84
|
+
*/
|
|
85
|
+
DateClass.prototype.addDaysToDate = function (date, days) {
|
|
86
|
+
var d = typeof date === 'object' ? date : new Date(date);
|
|
87
|
+
d.setDate(d.getDate() + days);
|
|
88
|
+
return d.toISOString().split('T')[0];
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* 获取倒计时剩余时间
|
|
92
|
+
* @param {Date | Number} endTime 截止时间
|
|
93
|
+
* @param {Date | Number} startTime 开始时间,默认取客户端当前时间
|
|
94
|
+
* date.format(new Date()) // 返回 {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
95
|
+
* date.format(1586840260500) // 返回 {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
96
|
+
* @return {object | boolean} {dd: '天', hh: '时', mm: '分', ss: '秒'}
|
|
97
|
+
*/
|
|
98
|
+
DateClass.prototype.remainTime = function (endTime, startTime) {
|
|
99
|
+
if (startTime === void 0) { startTime = new Date(); }
|
|
100
|
+
var ts = Number(endTime) - Number(startTime); // 计算剩余的毫秒数
|
|
101
|
+
var dd = Math.floor(ts / 1000 / 60 / 60 / 24); // 计算剩余的天数
|
|
102
|
+
var hh = Math.floor(ts / 1000 / 60 / 60 % 24); // 计算剩余的小时数
|
|
103
|
+
var mm = Math.floor(ts / 1000 / 60 % 60); // 计算剩余的分钟数
|
|
104
|
+
var ss = Math.floor(ts / 1000 % 60); // 计算剩余的秒数
|
|
105
|
+
if (ts <= 0)
|
|
106
|
+
return false;
|
|
107
|
+
return {
|
|
108
|
+
dd: (dd < 10 ? "0".concat(dd) : dd),
|
|
109
|
+
hh: (hh < 10 ? "0".concat(hh) : hh),
|
|
110
|
+
mm: (mm < 10 ? "0".concat(mm) : mm),
|
|
111
|
+
ss: (ss < 10 ? "0".concat(ss) : ss)
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* 格式化现在的已过时间
|
|
116
|
+
* @param {Number} startTime
|
|
117
|
+
* @return {String} *年前 *个月前 *天前 *小时前 *分钟前 刚刚
|
|
118
|
+
*/
|
|
119
|
+
DateClass.prototype.formatPassTime = function (startTime) {
|
|
120
|
+
var currentTime = new Date();
|
|
121
|
+
var time = currentTime - startTime;
|
|
122
|
+
var year = Math.floor(time / (1000 * 60 * 60 * 24) / 30 / 12);
|
|
123
|
+
if (year)
|
|
124
|
+
return "".concat(year, "\u5E74\u524D");
|
|
125
|
+
var month = Math.floor(time / (1000 * 60 * 60 * 24) / 30);
|
|
126
|
+
if (month)
|
|
127
|
+
return "".concat(month, "\u4E2A\u6708\u524D");
|
|
128
|
+
var day = Math.floor(time / (1000 * 60 * 60 * 24));
|
|
129
|
+
if (day)
|
|
130
|
+
return "".concat(day, "\u5929\u524D");
|
|
131
|
+
var hour = Math.floor(time / (1000 * 60 * 60));
|
|
132
|
+
if (hour)
|
|
133
|
+
return "".concat(hour, "\u5C0F\u65F6\u524D");
|
|
134
|
+
var min = Math.floor(time / (1000 * 60));
|
|
135
|
+
if (min)
|
|
136
|
+
return "".concat(min, "\u5206\u949F\u524D");
|
|
137
|
+
else
|
|
138
|
+
return '刚刚';
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* 格式化时间 列表里的时间内容格式 待废弃,统一时间格式
|
|
142
|
+
* @param {Number} time 1494141000*1000
|
|
143
|
+
* @return {String} *年*月*日 *月*日 刚刚(1-60秒) 1-60分钟前 1-24小时前 1-3天前
|
|
144
|
+
*/
|
|
145
|
+
DateClass.prototype.formatPassTimeForList = function (time) {
|
|
146
|
+
return DateClass.prototype.formatPassTimeForDetail(time, 'YYYY年MM月DD日', true);
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* 格式化时间 详情内容里的时间格式
|
|
150
|
+
* @param {Number} time 1494141000*1000
|
|
151
|
+
* @param {String} fmt 想要格式化的格式
|
|
152
|
+
* @param {Boolean} noYear 是否显示年
|
|
153
|
+
* @return {String} *年*月*日 *月*日 刚刚(1-60秒) 1-60分钟前 1-24小时前 1-3天前
|
|
154
|
+
*/
|
|
155
|
+
DateClass.prototype.formatPassTimeForDetail = function (time, fmt, noYear) {
|
|
156
|
+
if (fmt === void 0) { fmt = 'YYYY-MM-DD'; }
|
|
157
|
+
var date = (typeof time === 'number') ? new Date(time) : new Date((time || '').replace(/-/g, '/'));
|
|
158
|
+
var diff = (((new Date()).getTime() - date.getTime()) / 1000);
|
|
159
|
+
var dayDiff = Math.floor(diff / 86400);
|
|
160
|
+
var isValidDate = Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());
|
|
161
|
+
if (!isValidDate)
|
|
162
|
+
return '';
|
|
163
|
+
var formatDate = function () {
|
|
164
|
+
var today = new Date(date);
|
|
165
|
+
var o = {
|
|
166
|
+
'Y+': today.getFullYear(),
|
|
167
|
+
'M+': ('0' + (today.getMonth() + 1)).slice(-2),
|
|
168
|
+
'D+': ('0' + today.getDate()).slice(-2)
|
|
169
|
+
};
|
|
170
|
+
fmt = replacementYear(date, fmt);
|
|
171
|
+
var year = today.getFullYear();
|
|
172
|
+
if (!(new Date().getFullYear() > year) && noYear) {
|
|
173
|
+
var backData = replacementDate(o, fmt);
|
|
174
|
+
return backData.split('年')[1];
|
|
175
|
+
}
|
|
176
|
+
return replacementDate(o, fmt);
|
|
177
|
+
};
|
|
178
|
+
if (dayDiff === -1) {
|
|
179
|
+
return '刚刚';
|
|
180
|
+
}
|
|
181
|
+
else if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 15) {
|
|
182
|
+
return formatDate();
|
|
183
|
+
}
|
|
184
|
+
return (dayDiff === 0 && ((diff < 60 && '刚刚') ||
|
|
185
|
+
(diff < 120 && '1分钟前') ||
|
|
186
|
+
(diff < 3600 && Math.floor(diff / 60) + '分钟前') ||
|
|
187
|
+
(diff < 7200 && '1小时前') ||
|
|
188
|
+
(diff < 86400 && Math.floor(diff / 3600) + '小时前'))) || (dayDiff < 16 && dayDiff + '天前');
|
|
189
|
+
};
|
|
190
|
+
return DateClass;
|
|
191
|
+
}());
|
|
192
|
+
module.exports = new DateClass();
|