@ivujs/i-utils 2.0.0 → 2.1.1
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/README.md +40 -42
- package/dist/cjs/ID-card/index.cjs +21 -13
- package/dist/cjs/array/index.cjs +40 -34
- package/dist/cjs/clipboard/index.cjs +14 -10
- package/dist/cjs/color/index.cjs +73 -59
- package/dist/cjs/constants/date.cjs +55 -1
- package/dist/cjs/constants/id-card.cjs +42 -1
- package/dist/cjs/constants/keycode.cjs +117 -2
- package/dist/cjs/constants/lang.cjs +7 -1
- package/dist/cjs/constants/math.cjs +9 -1
- package/dist/cjs/constants/regexp.cjs +33 -10
- package/dist/cjs/constants/sort.cjs +10 -1
- package/dist/cjs/cookie/index.cjs +16 -13
- package/dist/cjs/crypto/base64/base64.cjs +398 -206
- package/dist/cjs/crypto/base64/index.cjs +58 -35
- package/dist/cjs/crypto/md5/index.cjs +33 -8
- package/dist/cjs/crypto/md5/md5.cjs +298 -844
- package/dist/cjs/crypto/sha256/index.cjs +95 -0
- package/dist/cjs/crypto/sha256/sha256.cjs +557 -0
- package/dist/cjs/crypto/sm3/index.cjs +27 -0
- package/dist/cjs/crypto/sm3/sm3.cjs +200 -0
- package/dist/cjs/crypto/sm4/index.cjs +101 -0
- package/dist/cjs/crypto/sm4/sm4.cjs +498 -0
- package/dist/cjs/date/index.cjs +420 -340
- package/dist/cjs/desensitized/index.cjs +21 -18
- package/dist/cjs/device/index.cjs +33 -30
- package/dist/cjs/dom/index.cjs +26 -23
- package/dist/cjs/file/index.cjs +51 -41
- package/dist/cjs/function/index.cjs +22 -19
- package/dist/cjs/id/index.cjs +6 -2
- package/dist/cjs/index.cjs +110 -127
- package/dist/cjs/keycode/index.cjs +9 -12
- package/dist/cjs/math/index.cjs +113 -81
- package/dist/cjs/number/index.cjs +10 -7
- package/dist/cjs/object/index.cjs +77 -30
- package/dist/cjs/pagination/index.cjs +25 -10
- package/dist/cjs/random/index.cjs +8 -5
- package/dist/cjs/regexp/index.cjs +23 -20
- package/dist/cjs/storage/index.cjs +4 -1
- package/dist/cjs/storage/localStorage.cjs +5 -5
- package/dist/cjs/storage/sessionStorage.cjs +6 -6
- package/dist/cjs/string/index.cjs +66 -63
- package/dist/cjs/url/index.cjs +83 -80
- package/dist/cjs/validate/index.cjs +122 -106
- package/dist/es/ID-card/index.d.ts +19 -14
- package/dist/es/ID-card/index.mjs +22 -14
- package/dist/es/array/index.d.ts +56 -50
- package/dist/es/array/index.mjs +40 -34
- package/dist/es/clipboard/index.d.ts +10 -7
- package/dist/es/clipboard/index.mjs +14 -10
- package/dist/es/color/index.d.ts +28 -25
- package/dist/es/color/index.mjs +73 -59
- package/dist/es/constants/date.d.ts +58 -174
- package/dist/es/constants/date.mjs +55 -1
- package/dist/es/constants/id-card.d.ts +45 -43
- package/dist/es/constants/id-card.mjs +42 -1
- package/dist/es/constants/index.d.ts +11 -7
- package/dist/es/constants/keycode.d.ts +119 -103
- package/dist/es/constants/keycode.mjs +117 -2
- package/dist/es/constants/lang.d.ts +10 -4
- package/dist/es/constants/lang.mjs +7 -1
- package/dist/es/constants/math.d.ts +12 -4
- package/dist/es/constants/math.mjs +9 -1
- package/dist/es/constants/regexp.d.ts +27 -24
- package/dist/es/constants/regexp.mjs +33 -10
- package/dist/es/constants/sort.d.ts +13 -5
- package/dist/es/constants/sort.mjs +10 -1
- package/dist/es/cookie/index.d.ts +13 -13
- package/dist/es/cookie/index.mjs +16 -13
- package/dist/es/crypto/base64/base64.d.ts +8 -5
- package/dist/es/crypto/base64/base64.mjs +393 -204
- package/dist/es/crypto/base64/index.d.ts +41 -24
- package/dist/es/crypto/base64/index.mjs +53 -32
- package/dist/es/crypto/index.d.ts +8 -8
- package/dist/es/crypto/md5/index.d.ts +20 -7
- package/dist/es/crypto/md5/index.mjs +32 -9
- package/dist/es/crypto/md5/md5.d.ts +9 -142
- package/dist/es/crypto/md5/md5.mjs +299 -844
- package/dist/es/crypto/sha256/index.d.ts +52 -0
- package/dist/es/crypto/sha256/index.mjs +86 -0
- package/dist/es/crypto/sha256/sha256.d.ts +82 -0
- package/dist/es/crypto/sha256/sha256.mjs +548 -0
- package/dist/es/crypto/sm3/index.d.ts +13 -0
- package/dist/es/crypto/sm3/index.mjs +24 -0
- package/dist/es/crypto/sm3/sm3.d.ts +3 -0
- package/dist/es/crypto/sm3/sm3.mjs +197 -0
- package/dist/es/crypto/sm4/index.d.ts +56 -0
- package/dist/es/crypto/sm4/index.mjs +95 -0
- package/dist/es/crypto/sm4/sm4.d.ts +48 -0
- package/dist/es/crypto/sm4/sm4.mjs +490 -0
- package/dist/es/date/index.d.ts +269 -179
- package/dist/es/date/index.mjs +417 -340
- package/dist/es/desensitized/index.d.ts +26 -23
- package/dist/es/desensitized/index.mjs +21 -18
- package/dist/es/device/index.d.ts +31 -25
- package/dist/es/device/index.mjs +33 -30
- package/dist/es/dom/index.d.ts +32 -29
- package/dist/es/dom/index.mjs +26 -23
- package/dist/es/file/index.d.ts +30 -30
- package/dist/es/file/index.mjs +51 -41
- package/dist/es/function/index.d.ts +10 -7
- package/dist/es/function/index.mjs +22 -19
- package/dist/es/id/index.d.ts +3 -0
- package/dist/es/id/index.mjs +6 -2
- package/dist/es/index.d.ts +24 -25
- package/dist/es/index.mjs +6 -23
- package/dist/es/keycode/index.d.ts +6 -6
- package/dist/es/keycode/index.mjs +9 -12
- package/dist/es/math/index.d.ts +37 -37
- package/dist/es/math/index.mjs +113 -81
- package/dist/es/number/index.d.ts +7 -7
- package/dist/es/number/index.mjs +10 -7
- package/dist/es/object/index.d.ts +20 -19
- package/dist/es/object/index.mjs +77 -30
- package/dist/es/pagination/index.d.ts +39 -6
- package/dist/es/pagination/index.mjs +25 -10
- package/dist/es/random/index.d.ts +10 -7
- package/dist/es/random/index.mjs +8 -5
- package/dist/es/regexp/index.d.ts +30 -30
- package/dist/es/regexp/index.mjs +23 -20
- package/dist/es/storage/index.d.ts +10 -4
- package/dist/es/storage/index.mjs +4 -1
- package/dist/es/storage/localStorage.d.ts +9 -9
- package/dist/es/storage/localStorage.mjs +5 -5
- package/dist/es/storage/sessionStorage.d.ts +9 -9
- package/dist/es/storage/sessionStorage.mjs +6 -6
- package/dist/es/string/index.d.ts +62 -59
- package/dist/es/string/index.mjs +66 -63
- package/dist/es/url/index.d.ts +65 -65
- package/dist/es/url/index.mjs +83 -80
- package/dist/es/validate/index.d.ts +83 -80
- package/dist/es/validate/index.mjs +122 -106
- package/dist/index.d.ts +2643 -2803
- package/dist/lib/index.full.umd.js +3609 -9494
- package/dist/lib/index.full.umd.min.js +2 -64
- package/dist/lib/index.full.umd.min.js.map +1 -1
- package/dist/resolver/auto-imports.cjs +40 -31
- package/dist/resolver/auto-imports.mjs +40 -31
- package/dist/resolver/index.cjs +1 -2
- package/dist/resolver/index.d.ts +1 -1
- package/dist/resolver/index.mjs +1 -2
- package/package.json +96 -90
- package/dist/cjs/crypto/aes/aes.cjs +0 -480
- package/dist/cjs/crypto/aes/index.cjs +0 -27
- package/dist/cjs/crypto/base32/base32.cjs +0 -357
- package/dist/cjs/crypto/base32/index.cjs +0 -41
- package/dist/cjs/crypto/des/des.cjs +0 -257
- package/dist/cjs/crypto/des/index.cjs +0 -28
- package/dist/cjs/crypto/sha/sha1/index.cjs +0 -24
- package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -529
- package/dist/cjs/crypto/sha/sha256/index.cjs +0 -43
- package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -595
- package/dist/cjs/crypto/sha/sha3/index.cjs +0 -41
- package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -624
- package/dist/cjs/crypto/sha/sha512/index.cjs +0 -81
- package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -950
- package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -149
- package/dist/cjs/crypto/sm/lib/ec.cjs +0 -315
- package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1608
- package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -158
- package/dist/cjs/crypto/sm/lib/utils.cjs +0 -170
- package/dist/cjs/crypto/sm/sm2/index.cjs +0 -112
- package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -231
- package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
- package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -93
- package/dist/cjs/crypto/sm/sm4/index.cjs +0 -27
- package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -327
- package/dist/cjs/crypto/tea/index.cjs +0 -25
- package/dist/cjs/crypto/tea/tea.cjs +0 -187
- package/dist/cjs/weapp/index.cjs +0 -142
- package/dist/es/crypto/aes/aes.d.ts +0 -156
- package/dist/es/crypto/aes/aes.mjs +0 -478
- package/dist/es/crypto/aes/index.d.ts +0 -16
- package/dist/es/crypto/aes/index.mjs +0 -24
- package/dist/es/crypto/base32/base32.d.ts +0 -3
- package/dist/es/crypto/base32/base32.mjs +0 -353
- package/dist/es/crypto/base32/index.d.ts +0 -24
- package/dist/es/crypto/base32/index.mjs +0 -36
- package/dist/es/crypto/des/des.d.ts +0 -52
- package/dist/es/crypto/des/des.mjs +0 -255
- package/dist/es/crypto/des/index.d.ts +0 -14
- package/dist/es/crypto/des/index.mjs +0 -25
- package/dist/es/crypto/sha/index.d.ts +0 -4
- package/dist/es/crypto/sha/sha1/index.d.ts +0 -13
- package/dist/es/crypto/sha/sha1/index.mjs +0 -21
- package/dist/es/crypto/sha/sha1/sha1.d.ts +0 -2
- package/dist/es/crypto/sha/sha1/sha1.mjs +0 -526
- package/dist/es/crypto/sha/sha256/index.d.ts +0 -26
- package/dist/es/crypto/sha/sha256/index.mjs +0 -38
- package/dist/es/crypto/sha/sha256/sha256.d.ts +0 -4
- package/dist/es/crypto/sha/sha256/sha256.mjs +0 -590
- package/dist/es/crypto/sha/sha3/index.d.ts +0 -24
- package/dist/es/crypto/sha/sha3/index.mjs +0 -36
- package/dist/es/crypto/sha/sha3/sha3.d.ts +0 -4
- package/dist/es/crypto/sha/sha3/sha3.mjs +0 -619
- package/dist/es/crypto/sha/sha512/index.d.ts +0 -52
- package/dist/es/crypto/sha/sha512/index.mjs +0 -72
- package/dist/es/crypto/sha/sha512/sha512.d.ts +0 -8
- package/dist/es/crypto/sha/sha512/sha512.mjs +0 -941
- package/dist/es/crypto/sm/index.d.ts +0 -3
- package/dist/es/crypto/sm/lib/asn1.d.ts +0 -12
- package/dist/es/crypto/sm/lib/asn1.mjs +0 -146
- package/dist/es/crypto/sm/lib/ec.d.ts +0 -126
- package/dist/es/crypto/sm/lib/ec.mjs +0 -312
- package/dist/es/crypto/sm/lib/jsbn.d.ts +0 -198
- package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1605
- package/dist/es/crypto/sm/lib/sm3.d.ts +0 -5
- package/dist/es/crypto/sm/lib/sm3.mjs +0 -155
- package/dist/es/crypto/sm/lib/utils.d.ts +0 -53
- package/dist/es/crypto/sm/lib/utils.mjs +0 -158
- package/dist/es/crypto/sm/sm2/index.d.ts +0 -71
- package/dist/es/crypto/sm/sm2/index.mjs +0 -101
- package/dist/es/crypto/sm/sm2/sm2.d.ts +0 -34
- package/dist/es/crypto/sm/sm2/sm2.mjs +0 -220
- package/dist/es/crypto/sm/sm3/index.d.ts +0 -7
- package/dist/es/crypto/sm/sm3/index.mjs +0 -13
- package/dist/es/crypto/sm/sm3/sm3.d.ts +0 -1
- package/dist/es/crypto/sm/sm3/sm3.mjs +0 -91
- package/dist/es/crypto/sm/sm4/index.d.ts +0 -16
- package/dist/es/crypto/sm/sm4/index.mjs +0 -24
- package/dist/es/crypto/sm/sm4/sm4.d.ts +0 -2
- package/dist/es/crypto/sm/sm4/sm4.mjs +0 -324
- package/dist/es/crypto/tea/index.d.ts +0 -14
- package/dist/es/crypto/tea/index.mjs +0 -22
- package/dist/es/crypto/tea/tea.d.ts +0 -69
- package/dist/es/crypto/tea/tea.mjs +0 -185
- package/dist/es/weapp/index.d.ts +0 -57
- package/dist/es/weapp/index.mjs +0 -131
package/dist/cjs/date/index.cjs
CHANGED
|
@@ -4,81 +4,104 @@ var index$1 = require('../validate/index.cjs');
|
|
|
4
4
|
var index = require('../number/index.cjs');
|
|
5
5
|
var date = require('../constants/date.cjs');
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @module 日期
|
|
9
|
+
*/
|
|
7
10
|
/* 快捷日期 */
|
|
8
11
|
/**
|
|
9
12
|
* 今天
|
|
10
|
-
*@returns {
|
|
13
|
+
*@returns {string} 返回日期字符串
|
|
11
14
|
*/
|
|
12
15
|
function today() {
|
|
13
16
|
return getDate();
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
19
|
* 昨天
|
|
17
|
-
* @returns {
|
|
20
|
+
* @returns {string} 返回日期字符串
|
|
18
21
|
*/
|
|
19
22
|
function yesterday() {
|
|
20
|
-
return
|
|
23
|
+
return toDateString(addDate(new Date(), -1));
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
23
26
|
* 明天
|
|
24
|
-
*@returns {
|
|
27
|
+
*@returns {string} 返回日期字符串
|
|
25
28
|
*/
|
|
26
29
|
function tomorrow() {
|
|
27
|
-
return
|
|
30
|
+
return toDateString(addDate(new Date(), 1));
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* 上周(7天前日期)
|
|
31
34
|
* @param {Date} date 日期参数,默认当前日期
|
|
32
|
-
* @returns {
|
|
35
|
+
* @returns {string} 返回日期字符串
|
|
33
36
|
*/
|
|
34
37
|
function lastWeek(date = new Date()) {
|
|
35
|
-
return
|
|
38
|
+
return toDateString(addDate(date, -7));
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
38
41
|
* 下周(7天后日期)
|
|
39
42
|
* @param {Date} date 日期参数,默认当前日期
|
|
40
|
-
* @returns {
|
|
43
|
+
* @returns {string} 返回日期字符串
|
|
41
44
|
*/
|
|
42
45
|
function nextWeek(date = new Date()) {
|
|
43
|
-
return
|
|
46
|
+
return toDateString(addDate(date, 7));
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* 上个月(30天前日期)
|
|
47
50
|
* @param {Date} date 日期参数,默认当前日期
|
|
48
|
-
* @returns {
|
|
51
|
+
* @returns {string} 返回日期字符串
|
|
49
52
|
*/
|
|
50
53
|
function lastMonth(date = new Date()) {
|
|
51
|
-
|
|
54
|
+
const newDate = addMonth(date, -1);
|
|
55
|
+
// 处理跨月边界
|
|
56
|
+
if (newDate.getMonth() === date.getMonth()) {
|
|
57
|
+
newDate.setDate(0);
|
|
58
|
+
}
|
|
59
|
+
return toDateString(newDate);
|
|
52
60
|
}
|
|
53
61
|
/**
|
|
54
62
|
* 下个月(30天后日期)
|
|
55
63
|
* @param {Date} date 日期参数,默认当前日期
|
|
56
|
-
* @returns {
|
|
64
|
+
* @returns {string} 返回日期字符串
|
|
57
65
|
*/
|
|
58
66
|
function nextMonth(date = new Date()) {
|
|
59
|
-
|
|
67
|
+
const newDate = addMonth(date, 1);
|
|
68
|
+
// 处理跨月边界
|
|
69
|
+
if (newDate.getMonth() === date.getMonth()) {
|
|
70
|
+
newDate.setDate(0);
|
|
71
|
+
}
|
|
72
|
+
return toDateString(newDate);
|
|
60
73
|
}
|
|
61
74
|
/**
|
|
62
75
|
* 上一年(365天前日期)
|
|
63
76
|
* @param {Date} date 日期参数,默认当前日期
|
|
64
|
-
* @returns {
|
|
77
|
+
* @returns {string} 返回日期字符串
|
|
65
78
|
*/
|
|
66
79
|
function lastYear(date = new Date()) {
|
|
67
|
-
|
|
80
|
+
const newDate = addYear(date, -1);
|
|
81
|
+
// 处理跨年边界,闰年2月29日→平年2月28日
|
|
82
|
+
if (newDate.getMonth() !== date.getMonth() || newDate.getDate() !== date.getDate()) {
|
|
83
|
+
newDate.setDate(28);
|
|
84
|
+
}
|
|
85
|
+
return toDateString(newDate);
|
|
68
86
|
}
|
|
69
87
|
/**
|
|
70
88
|
* 下一年(365天后日期)
|
|
71
89
|
* @param {Date} date 日期参数,默认当前日期
|
|
72
|
-
* @returns {
|
|
90
|
+
* @returns {string} 返回日期字符串
|
|
73
91
|
*/
|
|
74
92
|
function nextYear(date = new Date()) {
|
|
75
|
-
|
|
93
|
+
const newDate = addYear(date, 1);
|
|
94
|
+
// 处理跨年边界,闰年2月29日→平年2月28日
|
|
95
|
+
if (newDate.getMonth() !== date.getMonth() || newDate.getDate() !== date.getDate()) {
|
|
96
|
+
newDate.setDate(28);
|
|
97
|
+
}
|
|
98
|
+
return toDateString(newDate);
|
|
76
99
|
}
|
|
77
100
|
/* 判断当前日期 */
|
|
78
101
|
/**
|
|
79
102
|
* 是否为上午
|
|
80
103
|
* @param {Date} date 日期参数,默认当前日期
|
|
81
|
-
* @returns {
|
|
104
|
+
* @returns {boolean} 返回结果
|
|
82
105
|
*/
|
|
83
106
|
function isAM(date = new Date()) {
|
|
84
107
|
return date.getHours() < 12;
|
|
@@ -86,7 +109,7 @@ function isAM(date = new Date()) {
|
|
|
86
109
|
/**
|
|
87
110
|
* 是否为下午
|
|
88
111
|
* @param {Date} date 日期参数,默认当前日期
|
|
89
|
-
* @returns {
|
|
112
|
+
* @returns {boolean} 返回结果
|
|
90
113
|
*/
|
|
91
114
|
function isPM(date = new Date()) {
|
|
92
115
|
return date.getHours() >= 12;
|
|
@@ -94,88 +117,88 @@ function isPM(date = new Date()) {
|
|
|
94
117
|
/**
|
|
95
118
|
* 是否为今天
|
|
96
119
|
* @param {Date} date 日期参数,默认当前日期
|
|
97
|
-
* @returns {
|
|
120
|
+
* @returns {boolean} 返回结果
|
|
98
121
|
*/
|
|
99
122
|
function isToday(date = new Date()) {
|
|
100
123
|
// 此刻日期
|
|
101
|
-
|
|
124
|
+
const nowDate = new Date();
|
|
102
125
|
// 判断日期
|
|
103
|
-
return ["getFullYear", "getMonth", "getDate"].every((
|
|
126
|
+
return ["getFullYear", "getMonth", "getDate"].every((item) => nowDate[item]() === date[item]());
|
|
104
127
|
}
|
|
105
128
|
/**
|
|
106
129
|
* 是否为昨天
|
|
107
130
|
* @param {Date} date 日期参数,默认当前日期
|
|
108
|
-
* @returns {
|
|
131
|
+
* @returns {boolean} 返回结果
|
|
109
132
|
*/
|
|
110
133
|
function isYesterday(date = new Date()) {
|
|
111
134
|
// 计算时间差
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
135
|
+
const startTime = date.getTime();
|
|
136
|
+
const nowTime = Date.now();
|
|
137
|
+
const diffTime = nowTime - startTime;
|
|
138
|
+
const diffDay = index.parseInt(diffTime / (1000 * 60 * 60 * 24));
|
|
116
139
|
return diffDay === 1;
|
|
117
140
|
}
|
|
118
141
|
/**
|
|
119
142
|
* 是否为前天
|
|
120
143
|
* @param {Date} date 日期参数,默认当前日期
|
|
121
|
-
* @returns {
|
|
144
|
+
* @returns {boolean} 返回结果
|
|
122
145
|
*/
|
|
123
146
|
function isBeforeYesterday(date = new Date()) {
|
|
124
147
|
// 计算时间差
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
const startTime = date.getTime();
|
|
149
|
+
const nowTime = Date.now();
|
|
150
|
+
const diffTime = nowTime - startTime;
|
|
151
|
+
const diffDay = index.parseInt(diffTime / (1000 * 60 * 60 * 24));
|
|
129
152
|
return diffDay === 2;
|
|
130
153
|
}
|
|
131
154
|
/**
|
|
132
155
|
* 是否为明天
|
|
133
156
|
* @param {Date} date 日期参数,默认当前日期
|
|
134
|
-
* @returns {
|
|
157
|
+
* @returns {boolean} 返回结果
|
|
135
158
|
*/
|
|
136
159
|
function isTomorrow(date = new Date()) {
|
|
137
160
|
// 计算时间差
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
161
|
+
const startTime = date.getTime();
|
|
162
|
+
const nowTime = Date.now();
|
|
163
|
+
const diffTime = startTime - nowTime;
|
|
164
|
+
const diffDay = index.parseInt(diffTime / (1000 * 60 * 60 * 24));
|
|
142
165
|
return diffDay === 1;
|
|
143
166
|
}
|
|
144
167
|
/**
|
|
145
168
|
* 是否为后天
|
|
146
169
|
* @param {Date} date 日期参数,默认当前日期
|
|
147
|
-
* @returns {
|
|
170
|
+
* @returns {boolean} 返回结果
|
|
148
171
|
*/
|
|
149
172
|
function isAfterTomorrow(date = new Date()) {
|
|
150
173
|
// 计算时间差
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
174
|
+
const startTime = date.getTime();
|
|
175
|
+
const nowTime = Date.now();
|
|
176
|
+
const time = startTime - nowTime;
|
|
177
|
+
const diffDay = index.parseInt(time / (1000 * 60 * 60 * 24));
|
|
155
178
|
return diffDay === 2;
|
|
156
179
|
}
|
|
157
180
|
/**
|
|
158
181
|
* 是否为工作日
|
|
159
182
|
* @param {Date} date 日期参数,默认当前日期
|
|
160
|
-
* @returns {
|
|
183
|
+
* @returns {boolean} 返回结果
|
|
161
184
|
*/
|
|
162
185
|
function isWorkday(date = new Date()) {
|
|
163
|
-
|
|
186
|
+
const dayOfWeek = getDayOfWeek(date);
|
|
164
187
|
return dayOfWeek !== 6 && dayOfWeek !== 7;
|
|
165
188
|
}
|
|
166
189
|
/**
|
|
167
190
|
* 是否为周末(周六和周日)
|
|
168
191
|
* @param {Date} date 日期参数,默认当前日期
|
|
169
|
-
* @returns {
|
|
192
|
+
* @returns {boolean} 返回结果
|
|
170
193
|
*/
|
|
171
194
|
function isWeekend(date = new Date()) {
|
|
172
|
-
|
|
195
|
+
const dayOfWeek = getDayOfWeek(date);
|
|
173
196
|
return dayOfWeek === 6 || dayOfWeek === 7;
|
|
174
197
|
}
|
|
175
198
|
/**
|
|
176
199
|
* 是否为本周第一天
|
|
177
200
|
* @param {Date} date 日期参数,默认当前日期
|
|
178
|
-
* @returns {
|
|
201
|
+
* @returns {boolean} 返回结果
|
|
179
202
|
*/
|
|
180
203
|
function isFirstDayOfWeek(date = new Date()) {
|
|
181
204
|
return getDayOfWeek(date) === 1;
|
|
@@ -183,7 +206,7 @@ function isFirstDayOfWeek(date = new Date()) {
|
|
|
183
206
|
/**
|
|
184
207
|
* 是否为本周最后一天
|
|
185
208
|
* @param {Date} date 日期参数,默认当前日期
|
|
186
|
-
* @returns {
|
|
209
|
+
* @returns {boolean} 返回结果
|
|
187
210
|
*/
|
|
188
211
|
function isLastDayOfWeek(date = new Date()) {
|
|
189
212
|
return getDayOfWeek(date) === 7;
|
|
@@ -191,7 +214,7 @@ function isLastDayOfWeek(date = new Date()) {
|
|
|
191
214
|
/**
|
|
192
215
|
* 是否为本月第一天
|
|
193
216
|
* @param {Date} date 日期参数,默认当前日期
|
|
194
|
-
* @returns {
|
|
217
|
+
* @returns {boolean} 返回结果
|
|
195
218
|
*/
|
|
196
219
|
function isFirstDayOfMonth(date = new Date()) {
|
|
197
220
|
return getDayOfMonth(date) === 1;
|
|
@@ -199,7 +222,7 @@ function isFirstDayOfMonth(date = new Date()) {
|
|
|
199
222
|
/**
|
|
200
223
|
* 是否为本月最后一天
|
|
201
224
|
* @param {Date} date 日期参数,默认当前日期
|
|
202
|
-
* @returns {
|
|
225
|
+
* @returns {boolean} 返回结果
|
|
203
226
|
*/
|
|
204
227
|
function isLastDayOfMonth(date = new Date()) {
|
|
205
228
|
return getDayOfMonth(date) === getDaysOfMonth(date);
|
|
@@ -207,7 +230,7 @@ function isLastDayOfMonth(date = new Date()) {
|
|
|
207
230
|
/**
|
|
208
231
|
* 是否为本年第一天
|
|
209
232
|
* @param {Date} date 日期参数,默认当前日期
|
|
210
|
-
* @returns {
|
|
233
|
+
* @returns {boolean} 返回结果
|
|
211
234
|
*/
|
|
212
235
|
function isFirstDayOfYear(date = new Date()) {
|
|
213
236
|
return getDayOfYear(date) === 1;
|
|
@@ -215,7 +238,7 @@ function isFirstDayOfYear(date = new Date()) {
|
|
|
215
238
|
/**
|
|
216
239
|
* 是否为本年最后一天
|
|
217
240
|
* @param {Date} date 日期参数,默认当前日期
|
|
218
|
-
* @returns {
|
|
241
|
+
* @returns {boolean} 返回结果
|
|
219
242
|
*/
|
|
220
243
|
function isLastDayOfYear(date = new Date()) {
|
|
221
244
|
return getDayOfYear(date) === getDaysOfYear(date);
|
|
@@ -225,17 +248,17 @@ function isLastDayOfYear(date = new Date()) {
|
|
|
225
248
|
* 是否为闰年
|
|
226
249
|
* @description 闰年366天,平年365天
|
|
227
250
|
* @param {Date} date 日期参数,默认当前日期
|
|
228
|
-
* @returns {
|
|
251
|
+
* @returns {boolean} 返回结果
|
|
229
252
|
*/
|
|
230
253
|
function isLeapYear(date = new Date()) {
|
|
231
|
-
|
|
254
|
+
const year = date.getFullYear();
|
|
232
255
|
return (year % 100 !== 0 && year % 4 === 0) || year % 400 === 0;
|
|
233
256
|
}
|
|
234
257
|
/**
|
|
235
258
|
* 是否为平年
|
|
236
259
|
* @description 闰年366天,平年365天
|
|
237
260
|
* @param {Date} date 日期参数,默认当前日期
|
|
238
|
-
* @returns {
|
|
261
|
+
* @returns {boolean} 返回结果
|
|
239
262
|
*/
|
|
240
263
|
function isCommonYear(date = new Date()) {
|
|
241
264
|
return !isLeapYear(date);
|
|
@@ -245,26 +268,26 @@ function isCommonYear(date = new Date()) {
|
|
|
245
268
|
* 是否在日期之前
|
|
246
269
|
* @param {Date} startDate 开始日期
|
|
247
270
|
* @param {Date} endDate 结束日期,默认当前日期
|
|
248
|
-
* @returns {
|
|
271
|
+
* @returns {boolean} 返回结果
|
|
249
272
|
*/
|
|
250
273
|
function isBefore(startDate, endDate = new Date()) {
|
|
251
274
|
// 计算时间差
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
275
|
+
const startTime = startDate.getTime();
|
|
276
|
+
const endTime = endDate.getTime();
|
|
277
|
+
const diffTime = startTime - endTime;
|
|
255
278
|
return diffTime < 0;
|
|
256
279
|
}
|
|
257
280
|
/**
|
|
258
281
|
* 是否在日期之后
|
|
259
282
|
* @param {Date} startDate 开始日期
|
|
260
283
|
* @param {Date} endDate 结束日期,默认当前日期
|
|
261
|
-
* @returns {
|
|
284
|
+
* @returns {boolean} 返回结果
|
|
262
285
|
*/
|
|
263
286
|
function isAfter(startDate, endDate = new Date()) {
|
|
264
287
|
// 计算时间差
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
288
|
+
const startTime = startDate.getTime();
|
|
289
|
+
const endTime = endDate.getTime();
|
|
290
|
+
const diffTime = startTime - endTime;
|
|
268
291
|
return diffTime > 0;
|
|
269
292
|
}
|
|
270
293
|
/**
|
|
@@ -272,12 +295,12 @@ function isAfter(startDate, endDate = new Date()) {
|
|
|
272
295
|
* @param {Date} date 要比较的日期
|
|
273
296
|
* @param {Date} startDate 开始日期
|
|
274
297
|
* @param {Date} endDate 结束日期
|
|
275
|
-
* @returns {
|
|
298
|
+
* @returns {boolean} 返回结果
|
|
276
299
|
*/
|
|
277
300
|
function isBetween(date, startDate, endDate) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
301
|
+
const time = date.getTime();
|
|
302
|
+
const startTime = startDate.getTime();
|
|
303
|
+
const endTime = endDate.getTime();
|
|
281
304
|
return time > startTime && time < endTime;
|
|
282
305
|
}
|
|
283
306
|
/* 日期是否相同 */
|
|
@@ -285,46 +308,46 @@ function isBetween(date, startDate, endDate) {
|
|
|
285
308
|
* 两个日期是否为同一天
|
|
286
309
|
* @param {Date} startDate 开始日期
|
|
287
310
|
* @param {Date} endDate 结束日期
|
|
288
|
-
* @returns {
|
|
311
|
+
* @returns {boolean} 返回结果
|
|
289
312
|
*/
|
|
290
313
|
function isSame(startDate, endDate) {
|
|
291
|
-
return ["getFullYear", "getMonth", "getDate"].every((
|
|
314
|
+
return ["getFullYear", "getMonth", "getDate"].every((item) => startDate[item]() === endDate[item]());
|
|
292
315
|
}
|
|
293
316
|
/**
|
|
294
317
|
* 两个日期是否为同一周
|
|
295
318
|
* @param {Date} startDate 开始日期
|
|
296
319
|
* @param {Date} endDate 结束日期
|
|
297
|
-
* @returns {
|
|
320
|
+
* @returns {boolean} 返回结果
|
|
298
321
|
*/
|
|
299
322
|
function isSameWeek(startDate, endDate) {
|
|
300
|
-
|
|
301
|
-
|
|
323
|
+
const diffDate1 = startDate.getTime() / (24 * 60 * 60 * 1000);
|
|
324
|
+
const diffDate2 = endDate.getTime() / (24 * 60 * 60 * 1000);
|
|
302
325
|
return index.parseInt((diffDate1 + 4) / 7) === index.parseInt((diffDate2 + 4) / 7);
|
|
303
326
|
}
|
|
304
327
|
/**
|
|
305
328
|
* 两个日期是否为同一个月
|
|
306
329
|
* @param {Date} startDate 开始日期
|
|
307
330
|
* @param {Date} endDate 结束日期
|
|
308
|
-
* @returns {
|
|
331
|
+
* @returns {boolean} 返回结果
|
|
309
332
|
*/
|
|
310
333
|
function isSameMonth(startDate, endDate) {
|
|
311
|
-
return ["getFullYear", "getMonth"].every((
|
|
334
|
+
return ["getFullYear", "getMonth"].every((item) => startDate[item]() === endDate[item]());
|
|
312
335
|
}
|
|
313
336
|
/**
|
|
314
337
|
* 两个日期是否为同一年
|
|
315
338
|
* @param {Date} startDate 开始日期
|
|
316
339
|
* @param {Date} endDate 结束日期
|
|
317
|
-
* @returns {
|
|
340
|
+
* @returns {boolean} 返回结果
|
|
318
341
|
*/
|
|
319
342
|
function isSameYear(startDate, endDate) {
|
|
320
|
-
return ["getFullYear"].every((
|
|
343
|
+
return ["getFullYear"].every((item) => startDate[item]() === endDate[item]());
|
|
321
344
|
}
|
|
322
345
|
/* 比较两个日期相同 或 之前/之后 */
|
|
323
346
|
/**
|
|
324
347
|
* 两个日期是否相同或之前
|
|
325
348
|
* @param {Date} startDate 开始日期
|
|
326
349
|
* @param {Date} endDate 结束日期
|
|
327
|
-
* @returns {
|
|
350
|
+
* @returns {boolean} 返回结果
|
|
328
351
|
*/
|
|
329
352
|
function isSameOrBefore(startDate, endDate) {
|
|
330
353
|
return isSame(startDate, endDate) || isBefore(startDate, endDate);
|
|
@@ -333,7 +356,7 @@ function isSameOrBefore(startDate, endDate) {
|
|
|
333
356
|
* 两个日期是否相同或之后
|
|
334
357
|
* @param {Date} startDate 开始日期
|
|
335
358
|
* @param {Date} endDate 结束日期
|
|
336
|
-
* @returns {
|
|
359
|
+
* @returns {boolean} 返回结果
|
|
337
360
|
*/
|
|
338
361
|
function isSameOrAfter(startDate, endDate) {
|
|
339
362
|
return isSame(startDate, endDate) || isAfter(startDate, endDate);
|
|
@@ -349,25 +372,27 @@ function getNow() {
|
|
|
349
372
|
/**
|
|
350
373
|
* 获得当前日期字符串
|
|
351
374
|
* @param {Date} date 日期参数,默认当前日期
|
|
352
|
-
* @param
|
|
353
|
-
* @returns {
|
|
375
|
+
* @param options 配置项 配置项
|
|
376
|
+
* @returns {string} 返回日期字符串
|
|
354
377
|
*/
|
|
355
|
-
function getDate(date = new Date(),
|
|
356
|
-
|
|
378
|
+
function getDate(date = new Date(), options = { format: "yyyy-MM-dd" }) {
|
|
379
|
+
const { format } = options;
|
|
380
|
+
return toDateString(date, { format });
|
|
357
381
|
}
|
|
358
382
|
/**
|
|
359
383
|
* 获得当前日期时间字符串
|
|
360
384
|
* @param {Date} date 日期参数,默认当前日期
|
|
361
|
-
* @param
|
|
362
|
-
* @returns {
|
|
385
|
+
* @param options 配置项 配置项
|
|
386
|
+
* @returns {string} 返回日期时间字符串
|
|
363
387
|
*/
|
|
364
|
-
function getDateTime(date = new Date(),
|
|
365
|
-
|
|
388
|
+
function getDateTime(date = new Date(), options = { format: "yyyy-MM-dd HH:mm:ss" }) {
|
|
389
|
+
const { format } = options;
|
|
390
|
+
return toDateString(date, { format });
|
|
366
391
|
}
|
|
367
392
|
/**
|
|
368
393
|
* 获取当前时间戳
|
|
369
394
|
* @param {Date} date 日期参数,默认当前日期
|
|
370
|
-
* @returns {
|
|
395
|
+
* @returns {number} 返回时间戳
|
|
371
396
|
*/
|
|
372
397
|
function getTimestamp(date = new Date()) {
|
|
373
398
|
return date.getTime();
|
|
@@ -375,10 +400,10 @@ function getTimestamp(date = new Date()) {
|
|
|
375
400
|
/**
|
|
376
401
|
* 获取当前Unix时间戳
|
|
377
402
|
* @param {Date} date 日期参数,默认当前日期
|
|
378
|
-
* @returns {
|
|
403
|
+
* @returns {number} 返回Unix时间戳
|
|
379
404
|
*/
|
|
380
405
|
function getUnixTimestamp(date = new Date()) {
|
|
381
|
-
return Math.round(date / 1000);
|
|
406
|
+
return Math.round(date.getTime() / 1000);
|
|
382
407
|
}
|
|
383
408
|
/**
|
|
384
409
|
* 获得当前日期的对象形式
|
|
@@ -407,11 +432,11 @@ function getDateArray(date = new Date()) {
|
|
|
407
432
|
/**
|
|
408
433
|
* 获得当前日期是周几
|
|
409
434
|
* @param {Date} date 日期参数,默认当前日期
|
|
410
|
-
* @param
|
|
411
|
-
* @
|
|
412
|
-
* @returns {Number,String} 返回周几,会根据语言返回
|
|
435
|
+
* @param options 配置项
|
|
436
|
+
* @returns {number|string} 返回周几,会根据语言返回
|
|
413
437
|
*/
|
|
414
|
-
function getWeek(date$1 = new Date(),
|
|
438
|
+
function getWeek(date$1 = new Date(), options = { format: "E", lang: "zh" }) {
|
|
439
|
+
const { format, lang = "zh" } = options;
|
|
415
440
|
// 根据格式化和语言返回对应的周
|
|
416
441
|
if (format === "E") {
|
|
417
442
|
return date.DATE.WEEK[lang].MINI[date$1.getDay()];
|
|
@@ -429,13 +454,13 @@ function getWeek(date$1 = new Date(), format = "E", lang = "zh") {
|
|
|
429
454
|
/**
|
|
430
455
|
* 获得当前日期是第几季度
|
|
431
456
|
* @param {Date} date 日期参数,默认当前日期
|
|
432
|
-
* @param
|
|
433
|
-
* @
|
|
434
|
-
* @returns {Number,String} 返回第几季度,会根据语言返回
|
|
457
|
+
* @param options 配置项
|
|
458
|
+
* @returns {number|string} 返回第几季度,会根据语言返回
|
|
435
459
|
*/
|
|
436
|
-
function getQuarter(date$1 = new Date(),
|
|
460
|
+
function getQuarter(date$1 = new Date(), options = { format: "Q", lang: "zh" }) {
|
|
461
|
+
const { format, lang = "zh" } = options;
|
|
437
462
|
// 根据格式化和语言返回对应的周
|
|
438
|
-
|
|
463
|
+
const quarterNum = Number(Math.floor((date$1.getMonth() + 3) / 3));
|
|
439
464
|
if (format === "Q") {
|
|
440
465
|
return date.DATE.QUARTER[lang].MINI[quarterNum - 1];
|
|
441
466
|
}
|
|
@@ -453,7 +478,7 @@ function getQuarter(date$1 = new Date(), format = "Q", lang = "zh") {
|
|
|
453
478
|
/**
|
|
454
479
|
* 获得当前日期是所在周的第几天
|
|
455
480
|
* @param {Date} date 日期参数,默认当前日期
|
|
456
|
-
* @returns {
|
|
481
|
+
* @returns {number|string} 返回天数
|
|
457
482
|
*/
|
|
458
483
|
function getDayOfWeek(date = new Date()) {
|
|
459
484
|
return [7, 1, 2, 3, 4, 5, 6][date.getDay()];
|
|
@@ -461,7 +486,7 @@ function getDayOfWeek(date = new Date()) {
|
|
|
461
486
|
/**
|
|
462
487
|
* 获得当前日期是所在月的第几天
|
|
463
488
|
* @param {Date} date 日期参数,默认当前日期
|
|
464
|
-
* @returns {
|
|
489
|
+
* @returns {number} 返回天数
|
|
465
490
|
*/
|
|
466
491
|
function getDayOfMonth(date = new Date()) {
|
|
467
492
|
return date.getDate();
|
|
@@ -469,44 +494,43 @@ function getDayOfMonth(date = new Date()) {
|
|
|
469
494
|
/**
|
|
470
495
|
* 获得当前日期是所在年的第几天
|
|
471
496
|
* @param {Date} date 日期参数,默认当前日期
|
|
472
|
-
* @returns {
|
|
497
|
+
* @returns {number} 返回天数
|
|
473
498
|
*/
|
|
474
499
|
function getDayOfYear(date = new Date()) {
|
|
475
|
-
return Math.ceil((date - new Date(date.getFullYear().toString())) / (24 * 60 * 60 * 1000)) + 1;
|
|
500
|
+
return Math.ceil((date.getTime() - new Date(date.getFullYear().toString()).getTime()) / (24 * 60 * 60 * 1000)) + 1;
|
|
476
501
|
}
|
|
477
502
|
/* 当前日期的周是所在 月/年 的第几周 */
|
|
478
503
|
/**
|
|
479
504
|
* 获得当前日期是所在月的第几周
|
|
480
505
|
* @param {Date} date 日期参数,默认当前日期
|
|
481
|
-
* @returns {
|
|
506
|
+
* @returns {number} 返回周数
|
|
482
507
|
*/
|
|
483
508
|
function getWeekOfMonth(date = new Date()) {
|
|
484
|
-
return Math.ceil((date.getDate() + 6 - getDayOfWeek(date)) / 7);
|
|
509
|
+
return Math.ceil((date.getDate() + 6 - Number(getDayOfWeek(date))) / 7);
|
|
485
510
|
}
|
|
486
511
|
/**
|
|
487
512
|
* 获得当前日期是所在年的第几周
|
|
488
513
|
* @param {Date} date 日期参数,默认当前日期
|
|
489
|
-
* @returns {
|
|
514
|
+
* @returns {number} 返回周数
|
|
490
515
|
*/
|
|
491
516
|
function getWeekOfYear(date = new Date()) {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
return Math.ceil((diff + startDay) / 7);
|
|
517
|
+
const startDate = new Date(date.getFullYear(), 0, 1);
|
|
518
|
+
const startDay = getDayOfWeek(startDate);
|
|
519
|
+
const diff = Math.round((date.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000));
|
|
520
|
+
return Math.ceil((diff + Number(startDay)) / 7);
|
|
496
521
|
}
|
|
497
522
|
/* 当前日期所在 周/月/年 共几天 */
|
|
498
523
|
/**
|
|
499
524
|
* 获得当前日期所在的周共几天
|
|
500
|
-
* @
|
|
501
|
-
* @returns {Number} 返回天数
|
|
525
|
+
* @returns {number} 返回天数
|
|
502
526
|
*/
|
|
503
|
-
function getDaysOfWeek(
|
|
527
|
+
function getDaysOfWeek() {
|
|
504
528
|
return 7;
|
|
505
529
|
}
|
|
506
530
|
/**
|
|
507
531
|
* 获得当前日期所在的月共几天
|
|
508
532
|
* @param {Date} date 日期参数,默认当前日期
|
|
509
|
-
* @returns {
|
|
533
|
+
* @returns {number} 返回天数
|
|
510
534
|
*/
|
|
511
535
|
function getDaysOfMonth(date = new Date()) {
|
|
512
536
|
return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
|
|
@@ -514,7 +538,7 @@ function getDaysOfMonth(date = new Date()) {
|
|
|
514
538
|
/**
|
|
515
539
|
* 获得当前日期所在的年共几天
|
|
516
540
|
* @param {Date} date 日期参数,默认当前日期
|
|
517
|
-
* @returns {
|
|
541
|
+
* @returns {number} 返回天数
|
|
518
542
|
*/
|
|
519
543
|
function getDaysOfYear(date = new Date()) {
|
|
520
544
|
return isLeapYear(date) ? 366 : 365;
|
|
@@ -523,12 +547,12 @@ function getDaysOfYear(date = new Date()) {
|
|
|
523
547
|
/**
|
|
524
548
|
* 获得当前日期是所在月的第几周
|
|
525
549
|
* @param {Date} date 日期参数,默认当前日期
|
|
526
|
-
* @returns {
|
|
550
|
+
* @returns {number} 返回周数
|
|
527
551
|
*/
|
|
528
552
|
function getWeeksOfMonth(date = new Date()) {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
553
|
+
const startDate = new Date(date.getFullYear(), 0, 1);
|
|
554
|
+
const startDay = Number(getDayOfWeek(startDate));
|
|
555
|
+
const fullDays = isLeapYear(date) ? 366 : 365;
|
|
532
556
|
if (startDay === 1) {
|
|
533
557
|
return Math.ceil(fullDays / 7);
|
|
534
558
|
}
|
|
@@ -539,12 +563,12 @@ function getWeeksOfMonth(date = new Date()) {
|
|
|
539
563
|
/**
|
|
540
564
|
* 获得当前日期是所在年的第几周
|
|
541
565
|
* @param {Date} date 日期参数,默认当前日期
|
|
542
|
-
* @returns {
|
|
566
|
+
* @returns {number} 返回周数
|
|
543
567
|
*/
|
|
544
568
|
function getWeeksOfYear(date = new Date()) {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
569
|
+
const startDate = new Date(date.getFullYear(), 0, 1);
|
|
570
|
+
const startDay = Number(getDayOfWeek(startDate));
|
|
571
|
+
const fullDays = isLeapYear(date) ? 366 : 365;
|
|
548
572
|
if (startDay === 1) {
|
|
549
573
|
return Math.ceil(fullDays / 7);
|
|
550
574
|
}
|
|
@@ -556,101 +580,111 @@ function getWeeksOfYear(date = new Date()) {
|
|
|
556
580
|
/**
|
|
557
581
|
* 获得当前日期所在周的第一天
|
|
558
582
|
* @param {Date} date 日期参数,默认当前日期
|
|
559
|
-
* @returns {
|
|
583
|
+
* @returns {string} 返回日期字符串
|
|
560
584
|
*/
|
|
561
585
|
function getFirstDateOfWeek(date = new Date()) {
|
|
562
|
-
|
|
586
|
+
const weekDay = Number(getDayOfWeek(date));
|
|
563
587
|
date.setDate(date.getDate() - weekDay + 1);
|
|
564
|
-
return
|
|
588
|
+
return toDateString(date);
|
|
565
589
|
}
|
|
566
590
|
/**
|
|
567
591
|
* 获得当前日期所在周的最后一天
|
|
568
592
|
* @param {Date} date 日期参数,默认当前日期
|
|
569
|
-
* @returns {
|
|
593
|
+
* @returns {string} 返回日期字符串
|
|
570
594
|
*/
|
|
571
595
|
function getLastDateOfWeek(date = new Date()) {
|
|
572
|
-
|
|
596
|
+
const weekDay = Number(getDayOfWeek(date));
|
|
573
597
|
date.setDate(date.getDate() + (7 - weekDay));
|
|
574
|
-
return
|
|
598
|
+
return toDateString(date);
|
|
575
599
|
}
|
|
576
600
|
/**
|
|
577
601
|
* 获取当前日期所在周的所有日期
|
|
602
|
+
* @param {Date} date 日期参数,默认当前日期
|
|
603
|
+
* @returns {string[]} 返回日期数组
|
|
578
604
|
*/
|
|
579
605
|
function getFullDateOfWeek(date = new Date()) {
|
|
580
|
-
|
|
606
|
+
const array = [];
|
|
581
607
|
// 获得当前日期是本周几
|
|
582
|
-
|
|
608
|
+
const dayOfWeek = date.getDay();
|
|
583
609
|
// 根据当前日期获取本周一
|
|
584
|
-
|
|
610
|
+
const firstDateOfWeek = new Date();
|
|
585
611
|
firstDateOfWeek.setDate(date.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1));
|
|
586
612
|
// 遍历本周日期
|
|
587
613
|
for (let i = 0; i < 7; i++) {
|
|
588
|
-
|
|
614
|
+
const currentDate = new Date(firstDateOfWeek);
|
|
589
615
|
currentDate.setDate(currentDate.getDate() + i);
|
|
590
|
-
array.push(
|
|
616
|
+
array.push(toDateString(currentDate));
|
|
591
617
|
}
|
|
592
618
|
return array;
|
|
593
619
|
}
|
|
594
620
|
/**
|
|
595
621
|
* 获得当前日期所在月的第一天
|
|
596
622
|
* @param {Date} date 日期参数,默认当前日期
|
|
597
|
-
* @returns {
|
|
623
|
+
* @returns {string} 返回日期字符串
|
|
598
624
|
*/
|
|
599
625
|
function getFirstDateOfMonth(date = new Date()) {
|
|
600
626
|
date.setDate(1);
|
|
601
|
-
return
|
|
627
|
+
return toDateString(date);
|
|
602
628
|
}
|
|
603
629
|
/**
|
|
604
630
|
* 获得当前日期所在月的最后一天
|
|
605
631
|
* @param {Date} date 日期参数,默认当前日期
|
|
606
|
-
* @returns {
|
|
632
|
+
* @returns {string} 返回日期字符串
|
|
607
633
|
*/
|
|
608
634
|
function getLastDateOfMonth(date = new Date()) {
|
|
609
|
-
return
|
|
635
|
+
return toDateString(new Date(date.getFullYear(), date.getMonth() + 1, 0));
|
|
610
636
|
}
|
|
611
637
|
/**
|
|
612
638
|
* 获取当前日期所在月的所有日期
|
|
639
|
+
* @param {Date} date 日期参数,默认当前日期
|
|
640
|
+
* @returns {string[]} 返回日期数组
|
|
613
641
|
*/
|
|
614
642
|
function getFullDateOfMonth(date = new Date()) {
|
|
615
|
-
|
|
643
|
+
const array = [];
|
|
616
644
|
// 获得本月第一天
|
|
617
|
-
|
|
645
|
+
const firstDateOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);
|
|
618
646
|
// 获得本月最后一天
|
|
619
|
-
|
|
647
|
+
const lastDateOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
620
648
|
// 遍历本月日期
|
|
621
649
|
for (let i = 0; i < lastDateOfMonth.getDate(); i++) {
|
|
622
|
-
|
|
650
|
+
const currentDate = new Date(firstDateOfMonth);
|
|
623
651
|
currentDate.setDate(firstDateOfMonth.getDate() + i);
|
|
624
|
-
array.push(currentDate);
|
|
652
|
+
array.push(toDateString(currentDate));
|
|
625
653
|
}
|
|
626
654
|
return array;
|
|
627
655
|
}
|
|
628
656
|
/**
|
|
629
657
|
* 获取当前日期所在年的第一天
|
|
658
|
+
* @param {Date} date 日期参数,默认当前日期
|
|
659
|
+
* @returns {string} 返回日期字符串
|
|
630
660
|
*/
|
|
631
661
|
function getFirstDateOfYear(date = new Date()) {
|
|
632
|
-
return new Date(date.getFullYear(), 0, 1);
|
|
662
|
+
return toDateString(new Date(date.getFullYear(), 0, 1));
|
|
633
663
|
}
|
|
634
664
|
/**
|
|
635
665
|
* 获取当前日期所在年的最后一天
|
|
666
|
+
* @param {Date} date 日期参数,默认当前日期
|
|
667
|
+
* @returns {string} 返回日期字符串
|
|
636
668
|
*/
|
|
637
669
|
function getLastDateOfYear(date = new Date()) {
|
|
638
|
-
return new Date(date.getFullYear(), 11, 31);
|
|
670
|
+
return toDateString(new Date(date.getFullYear(), 11, 31));
|
|
639
671
|
}
|
|
640
672
|
/**
|
|
641
673
|
* 获取当前日期所在年的所有日期
|
|
674
|
+
* @param {Date} date 日期参数,默认当前日期
|
|
675
|
+
* @returns {string} 返回日期字符串
|
|
642
676
|
*/
|
|
643
677
|
function getFullDateOfYear(date = new Date()) {
|
|
644
|
-
|
|
678
|
+
const array = [];
|
|
645
679
|
// 获得本年第一天
|
|
646
|
-
|
|
680
|
+
const firstDateOfYear = new Date(date.getFullYear(), 0, 1);
|
|
647
681
|
// 获得本年一共多少天
|
|
648
|
-
|
|
682
|
+
const daysOfYear = getDaysOfYear();
|
|
649
683
|
// 遍历本年日期
|
|
650
684
|
for (let i = 0; i < daysOfYear; i++) {
|
|
651
|
-
|
|
685
|
+
const currentDate = new Date(firstDateOfYear);
|
|
652
686
|
currentDate.setDate(firstDateOfYear.getDate() + i);
|
|
653
|
-
array.push(currentDate
|
|
687
|
+
array.push(toDateString(currentDate));
|
|
654
688
|
}
|
|
655
689
|
return array;
|
|
656
690
|
}
|
|
@@ -659,12 +693,12 @@ function getFullDateOfYear(date = new Date()) {
|
|
|
659
693
|
* 计算两个日期相差的天数,不满一天为0
|
|
660
694
|
* @param {Date} startDate 开始日期
|
|
661
695
|
* @param {Date} endDate 结束日期
|
|
662
|
-
* @returns {
|
|
696
|
+
* @returns {number} 返回两个日期相差的天数,结果为正数或者负数
|
|
663
697
|
*/
|
|
664
698
|
function getDiffDay(startDate, endDate) {
|
|
665
699
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
666
700
|
return 0;
|
|
667
|
-
|
|
701
|
+
const diff = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
|
|
668
702
|
// 返回
|
|
669
703
|
return diff >= 0 ? Math.abs(diff) : diff;
|
|
670
704
|
}
|
|
@@ -672,12 +706,12 @@ function getDiffDay(startDate, endDate) {
|
|
|
672
706
|
* 计算两个日期相差的周数,不满一周为0
|
|
673
707
|
* @param {Date} startDate 开始日期
|
|
674
708
|
* @param {Date} endDate 结束日期
|
|
675
|
-
* @returns {
|
|
709
|
+
* @returns {number} 返回两个日期相差的周数,结果为正数或者负数
|
|
676
710
|
*/
|
|
677
711
|
function getDiffWeek(startDate, endDate) {
|
|
678
712
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
679
713
|
return 0;
|
|
680
|
-
|
|
714
|
+
const diff = (endDate.getTime() - startDate.getTime()) / (7 * 24 * 60 * 60 * 1000);
|
|
681
715
|
// 返回
|
|
682
716
|
return diff >= 0 ? Math.abs(diff) : diff;
|
|
683
717
|
}
|
|
@@ -685,12 +719,12 @@ function getDiffWeek(startDate, endDate) {
|
|
|
685
719
|
* 计算两个日期相差的月数,不满一月为0
|
|
686
720
|
* @param {Date} startDate 开始日期
|
|
687
721
|
* @param {Date} endDate 结束日期
|
|
688
|
-
* @returns {
|
|
722
|
+
* @returns {number} 返回两个日期相差的月数,结果为正数或者负数
|
|
689
723
|
*/
|
|
690
724
|
function getDiffMonth(startDate, endDate) {
|
|
691
725
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
692
726
|
return 0;
|
|
693
|
-
|
|
727
|
+
const diff = (startDate.getTime() - endDate.getTime()) / (30 * 24 * 60 * 60 * 1000);
|
|
694
728
|
// 返回
|
|
695
729
|
return diff >= 0 ? Math.abs(diff) : diff;
|
|
696
730
|
}
|
|
@@ -698,12 +732,12 @@ function getDiffMonth(startDate, endDate) {
|
|
|
698
732
|
* 计算两个日期相差的年数,不满一年为0
|
|
699
733
|
* @param {Date} startDate 开始日期
|
|
700
734
|
* @param {Date} endDate 结束日期
|
|
701
|
-
* @returns {
|
|
735
|
+
* @returns {number} 返回两个日期相差的年数,结果为正数或者负数
|
|
702
736
|
*/
|
|
703
737
|
function getDiffYear(startDate, endDate) {
|
|
704
738
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
705
739
|
return 0;
|
|
706
|
-
|
|
740
|
+
const diff = (endDate.getTime() - startDate.getTime()) / (12 * 30 * 24 * 60 * 60 * 1000);
|
|
707
741
|
// 返回
|
|
708
742
|
return diff >= 0 ? Math.abs(diff) : diff;
|
|
709
743
|
}
|
|
@@ -718,9 +752,9 @@ function getBetweenDates(startDate, endDate) {
|
|
|
718
752
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
719
753
|
return [];
|
|
720
754
|
// 计算
|
|
721
|
-
|
|
722
|
-
while (endDate - startDate >= 0) {
|
|
723
|
-
|
|
755
|
+
const array = [];
|
|
756
|
+
while (endDate.getTime() - startDate.getTime() >= 0) {
|
|
757
|
+
const year = startDate.getFullYear(), month = _digit(startDate.getMonth() + 1), day = _digit(startDate.getDate());
|
|
724
758
|
// 加入数组
|
|
725
759
|
array.push(year + "-" + month + "-" + day);
|
|
726
760
|
// 更新日期
|
|
@@ -739,22 +773,22 @@ function getBetweenMonths(startDate, endDate) {
|
|
|
739
773
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
740
774
|
return [];
|
|
741
775
|
// 计算
|
|
742
|
-
|
|
776
|
+
const array = [];
|
|
743
777
|
// 获取时间对象
|
|
744
|
-
|
|
745
|
-
|
|
778
|
+
const min = new Date();
|
|
779
|
+
const max = new Date();
|
|
746
780
|
// 设置起始时间
|
|
747
781
|
min.setFullYear(startDate.getFullYear(), startDate.getMonth() + 1);
|
|
748
782
|
// 设置结束时间
|
|
749
783
|
max.setFullYear(endDate.getFullYear(), endDate.getMonth() + 1);
|
|
750
784
|
// 复制一份起始时间对象
|
|
751
|
-
|
|
785
|
+
const curr = min;
|
|
752
786
|
// 定义字符串
|
|
753
787
|
let str = "";
|
|
754
788
|
// 起始时间在结束时间之前
|
|
755
789
|
while (curr <= max) {
|
|
756
790
|
// 获取此时间的月份
|
|
757
|
-
|
|
791
|
+
const month = curr.getMonth();
|
|
758
792
|
// 如果月份为0,也就是代表12月份
|
|
759
793
|
if (month === 0) {
|
|
760
794
|
str = curr.getFullYear() - 1 + "-" + 12;
|
|
@@ -780,9 +814,9 @@ function getBetweenYears(startDate, endDate) {
|
|
|
780
814
|
if (index$1.isNull(startDate) || index$1.isNull(endDate))
|
|
781
815
|
return [];
|
|
782
816
|
// 计算
|
|
783
|
-
|
|
784
|
-
while (endDate - startDate >= 0) {
|
|
785
|
-
|
|
817
|
+
const array = [];
|
|
818
|
+
while (endDate.getTime() - startDate.getTime() >= 0) {
|
|
819
|
+
const year = startDate.getFullYear();
|
|
786
820
|
// 加入数组
|
|
787
821
|
array.push(year);
|
|
788
822
|
// 更新日期
|
|
@@ -795,22 +829,23 @@ function getBetweenYears(startDate, endDate) {
|
|
|
795
829
|
* 获得过去时间的字符串显示
|
|
796
830
|
* @description 例如:刚刚,1分钟前,1小时前等
|
|
797
831
|
* @param {Date} date 日期参数
|
|
798
|
-
* @param
|
|
799
|
-
* @returns {
|
|
832
|
+
* @param options 配置项
|
|
833
|
+
* @returns {string} 返回字符串
|
|
800
834
|
*/
|
|
801
|
-
function getPastTime(date$1,
|
|
835
|
+
function getPastTime(date$1, options = { lang: "zh" }) {
|
|
836
|
+
const { lang = "zh" } = options;
|
|
802
837
|
if (index$1.isNull(date$1))
|
|
803
838
|
return "--";
|
|
804
839
|
// 计算时间差
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
840
|
+
const startTime = date$1.getTime();
|
|
841
|
+
const currentTime = Date.now();
|
|
842
|
+
const time = currentTime - startTime;
|
|
808
843
|
// 年月日时分
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
844
|
+
const year = index.parseInt(time / (1000 * 60 * 60 * 24 * 30 * 12));
|
|
845
|
+
const month = index.parseInt(time / (1000 * 60 * 60 * 24 * 30));
|
|
846
|
+
const day = index.parseInt(time / (1000 * 60 * 60 * 24));
|
|
847
|
+
const hour = index.parseInt(time / (1000 * 60 * 60));
|
|
848
|
+
const min = index.parseInt(time / (1000 * 60));
|
|
814
849
|
// 返回结果
|
|
815
850
|
if (year) {
|
|
816
851
|
return year + date.DATE.PASS_TIME[lang].YEAR;
|
|
@@ -848,15 +883,16 @@ function getPastTime(date$1, lang = "zh") {
|
|
|
848
883
|
* 获得剩余时间的字符串显示
|
|
849
884
|
* @description 例如:1天10小时20分钟30秒
|
|
850
885
|
* @param {Date} date 日期参数
|
|
851
|
-
* @param
|
|
852
|
-
* @returns {
|
|
886
|
+
* @param options 配置项
|
|
887
|
+
* @returns {string} 返回字符串
|
|
853
888
|
*/
|
|
854
|
-
function getOverTime(date$1,
|
|
889
|
+
function getOverTime(date$1, options = { lang: "zh" }) {
|
|
890
|
+
const { lang = "zh" } = options;
|
|
855
891
|
if (index$1.isNull(date$1))
|
|
856
892
|
return "--";
|
|
857
893
|
// 计算
|
|
858
|
-
|
|
859
|
-
|
|
894
|
+
const startDate = new Date(); // 开始时间
|
|
895
|
+
const t = date$1.getTime() - startDate.getTime(); // 时间差
|
|
860
896
|
let d = 0, h = 0, m = 0, s = 0;
|
|
861
897
|
if (t >= 0) {
|
|
862
898
|
d = Math.floor(t / 1000 / 3600 / 24);
|
|
@@ -870,23 +906,23 @@ function getOverTime(date$1, lang = "zh") {
|
|
|
870
906
|
/**
|
|
871
907
|
* 通过日期获得年龄
|
|
872
908
|
* @param {Date} date 日期参数
|
|
873
|
-
* @returns {
|
|
909
|
+
* @returns {number} 返回周岁年龄
|
|
874
910
|
*/
|
|
875
911
|
function getAge(date) {
|
|
876
912
|
let age = 0;
|
|
877
913
|
// 传参日期
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
914
|
+
const dateArray = toDateString(date).split("-");
|
|
915
|
+
const birthYear = Number(dateArray[0]);
|
|
916
|
+
const birthMonth = Number(dateArray[1]);
|
|
917
|
+
const birthDay = Number(dateArray[2]);
|
|
882
918
|
// 当前的日期
|
|
883
|
-
|
|
884
|
-
|
|
919
|
+
const nowDate = new Date();
|
|
920
|
+
const nowYear = nowDate.getFullYear(), nowMonth = nowDate.getMonth() + 1, nowDay = nowDate.getDate();
|
|
885
921
|
// 出生年份需要小于当年,否则是0岁
|
|
886
|
-
|
|
922
|
+
const diffAge = nowYear - birthYear;
|
|
887
923
|
if (diffAge > 0) {
|
|
888
|
-
|
|
889
|
-
|
|
924
|
+
const diffMonth = nowMonth - birthMonth;
|
|
925
|
+
const diffDay = nowDay - birthDay;
|
|
890
926
|
if (diffMonth === 0) {
|
|
891
927
|
if (diffDay < 0) {
|
|
892
928
|
age = diffAge - 1;
|
|
@@ -910,29 +946,31 @@ function getAge(date) {
|
|
|
910
946
|
/**
|
|
911
947
|
* 通过日期获得星座
|
|
912
948
|
* @param {Date} date 日期参数
|
|
913
|
-
* @param
|
|
914
|
-
* @returns {
|
|
949
|
+
* @param options 配置项
|
|
950
|
+
* @returns {string} 返回星座
|
|
915
951
|
*/
|
|
916
|
-
function getZodiac(date$1,
|
|
952
|
+
function getZodiac(date$1, options = { lang: "zh" }) {
|
|
953
|
+
const { lang = "zh" } = options;
|
|
917
954
|
if (index$1.isNull(date$1))
|
|
918
955
|
return "";
|
|
919
956
|
// 计算
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
957
|
+
const days = [20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22];
|
|
958
|
+
const month = date$1.getMonth() + 1;
|
|
959
|
+
const day = date$1.getDate();
|
|
923
960
|
return day < days[month - 1] ? date.DATE.ZODIAC[lang][month - 1] : date.DATE.ZODIAC[lang][month];
|
|
924
961
|
}
|
|
925
962
|
/**
|
|
926
963
|
* 通过日期获得生肖
|
|
927
964
|
* @param {Date} date 日期参数
|
|
928
|
-
* @param
|
|
929
|
-
* @returns {
|
|
965
|
+
* @param options 配置项
|
|
966
|
+
* @returns {string} 返回生肖
|
|
930
967
|
*/
|
|
931
|
-
function getChineseZodiac(date$1,
|
|
968
|
+
function getChineseZodiac(date$1, options = { lang: "zh" }) {
|
|
969
|
+
const { lang = "zh" } = options;
|
|
932
970
|
if (index$1.isNull(date$1))
|
|
933
971
|
return "";
|
|
934
972
|
// 计算
|
|
935
|
-
|
|
973
|
+
const year = date$1.getFullYear();
|
|
936
974
|
if (year < 1900) {
|
|
937
975
|
return "未知";
|
|
938
976
|
}
|
|
@@ -942,7 +980,7 @@ function getChineseZodiac(date$1, lang = "zh") {
|
|
|
942
980
|
/**
|
|
943
981
|
* 日期加减年
|
|
944
982
|
* @param {Date} date 日期参数,默认当前日期
|
|
945
|
-
* @param {
|
|
983
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
946
984
|
* @returns {Date} 返回加减后的日期
|
|
947
985
|
*/
|
|
948
986
|
function addYear(date = new Date(), num = 1) {
|
|
@@ -952,7 +990,7 @@ function addYear(date = new Date(), num = 1) {
|
|
|
952
990
|
/**
|
|
953
991
|
* 日期加减月
|
|
954
992
|
* @param {Date} date 日期参数,默认当前日期
|
|
955
|
-
* @param {
|
|
993
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
956
994
|
* @returns {Date} 返回加减后的日期
|
|
957
995
|
*/
|
|
958
996
|
function addMonth(date = new Date(), num = 1) {
|
|
@@ -962,7 +1000,7 @@ function addMonth(date = new Date(), num = 1) {
|
|
|
962
1000
|
/**
|
|
963
1001
|
* 日期加减天
|
|
964
1002
|
* @param {Date} date 日期参数,默认当前日期
|
|
965
|
-
* @param {
|
|
1003
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
966
1004
|
* @returns {Date} 返回加减后的日期
|
|
967
1005
|
*/
|
|
968
1006
|
function addDate(date = new Date(), num = 1) {
|
|
@@ -972,7 +1010,7 @@ function addDate(date = new Date(), num = 1) {
|
|
|
972
1010
|
/**
|
|
973
1011
|
* 日期加减小时
|
|
974
1012
|
* @param {Date} date 日期参数,默认当前日期
|
|
975
|
-
* @param {
|
|
1013
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
976
1014
|
* @returns {Date} 返回加减后的日期
|
|
977
1015
|
*/
|
|
978
1016
|
function addHours(date = new Date(), num = 1) {
|
|
@@ -982,7 +1020,7 @@ function addHours(date = new Date(), num = 1) {
|
|
|
982
1020
|
/**
|
|
983
1021
|
* 日期加减分钟
|
|
984
1022
|
* @param {Date} date 日期参数,默认当前日期
|
|
985
|
-
* @param {
|
|
1023
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
986
1024
|
* @returns {Date} 返回加减后的日期
|
|
987
1025
|
*/
|
|
988
1026
|
function addMinutes(date = new Date(), num = 1) {
|
|
@@ -992,7 +1030,7 @@ function addMinutes(date = new Date(), num = 1) {
|
|
|
992
1030
|
/**
|
|
993
1031
|
* 日期加减秒
|
|
994
1032
|
* @param {Date} date 日期参数,默认当前日期
|
|
995
|
-
* @param {
|
|
1033
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
996
1034
|
* @returns {Date} 返回加减后的日期
|
|
997
1035
|
*/
|
|
998
1036
|
function addSeconds(date = new Date(), num = 1) {
|
|
@@ -1002,7 +1040,7 @@ function addSeconds(date = new Date(), num = 1) {
|
|
|
1002
1040
|
/**
|
|
1003
1041
|
* 日期加减毫秒
|
|
1004
1042
|
* @param {Date} date 日期参数,默认当前日期
|
|
1005
|
-
* @param {
|
|
1043
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+100
|
|
1006
1044
|
* @returns {Date} 返回加减后的日期
|
|
1007
1045
|
*/
|
|
1008
1046
|
function addMillisecond(date = new Date(), num = 100) {
|
|
@@ -1012,7 +1050,7 @@ function addMillisecond(date = new Date(), num = 100) {
|
|
|
1012
1050
|
/**
|
|
1013
1051
|
* 日期加减周
|
|
1014
1052
|
* @param {Date} date 日期参数,默认当前日期
|
|
1015
|
-
* @param {
|
|
1053
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
1016
1054
|
* @returns {Date} 返回加减后的日期
|
|
1017
1055
|
*/
|
|
1018
1056
|
function addWeek(date = new Date(), num = 1) {
|
|
@@ -1022,7 +1060,7 @@ function addWeek(date = new Date(), num = 1) {
|
|
|
1022
1060
|
/**
|
|
1023
1061
|
* 日期加减季度
|
|
1024
1062
|
* @param {Date} date 日期参数,默认当前日期
|
|
1025
|
-
* @param {
|
|
1063
|
+
* @param {number} num 加减数量,用正数和负数表示;默认+1
|
|
1026
1064
|
* @returns {Date} 返回加减后的日期
|
|
1027
1065
|
*/
|
|
1028
1066
|
function addQuarter(date = new Date(), num = 1) {
|
|
@@ -1031,147 +1069,186 @@ function addQuarter(date = new Date(), num = 1) {
|
|
|
1031
1069
|
}
|
|
1032
1070
|
/* 格式化和解析日期 */
|
|
1033
1071
|
/**
|
|
1034
|
-
*
|
|
1035
|
-
* @description
|
|
1036
|
-
* @param {
|
|
1037
|
-
* @
|
|
1038
|
-
* @
|
|
1039
|
-
*
|
|
1072
|
+
* UTC 日期对象转本地时区日期对象
|
|
1073
|
+
* @description 将 UTC 时间的 Date 对象转换为本地时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
1074
|
+
* @param {Date} date UTC 日期对象,默认当前 UTC 时间
|
|
1075
|
+
* @returns {Date} 本地时区日期对象(时间戳 = UTC时间戳 + 时区偏移毫秒数)
|
|
1076
|
+
* @example
|
|
1077
|
+
* // UTC时间:2025-01-26 00:00:00
|
|
1078
|
+
* const utcDate = new Date('2025-01-26T00:00:00Z');
|
|
1079
|
+
* const localDate = fromDateUTC(utcDate);
|
|
1080
|
+
* console.log(toDateString(localDate)); // 2025-01-26 08:00:00(北京本地时间)
|
|
1040
1081
|
*/
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
"s+": date$1.getSeconds(), // 秒
|
|
1072
|
-
"S+": date$1.getMilliseconds(), // 毫秒
|
|
1073
|
-
"a+": date$1.getHours() < 12 ? "am" : "pm", // 上午/下午,小写
|
|
1074
|
-
"A+": date$1.getHours() < 12 ? "AM" : "PM", // 上午/下午,大写
|
|
1075
|
-
"E+": date$1.getDay(), // 周
|
|
1076
|
-
"Q+": Math.floor((date$1.getMonth() + 3) / 3), // 季度
|
|
1077
|
-
S: date$1.getMilliseconds(), // 毫秒
|
|
1078
|
-
};
|
|
1079
|
-
// 年
|
|
1080
|
-
let yearReg = new RegExp(/(y+)/g);
|
|
1081
|
-
if (yearReg.test(format)) {
|
|
1082
|
-
format = format.replace(yearReg, function (match, $1) {
|
|
1083
|
-
return (date$1.getFullYear() + "").substring(4 - $1.length);
|
|
1084
|
-
});
|
|
1085
|
-
}
|
|
1086
|
-
// 上午/下午
|
|
1087
|
-
let amPmReg = new RegExp(/((b+)|(A+))/g);
|
|
1088
|
-
if (amPmReg.test(format)) {
|
|
1089
|
-
format = format.replace(amPmReg, function (match, $1) {
|
|
1090
|
-
// AA或者aa为中文
|
|
1091
|
-
if ($1.length > 1) {
|
|
1092
|
-
return date$1.getHours() < 12 ? date.DATE.AM_PM[lang].AM : date.DATE.AM_PM[lang].PM;
|
|
1093
|
-
}
|
|
1094
|
-
// 其他为英文
|
|
1095
|
-
else {
|
|
1096
|
-
return $1 === $1.toLowerCase()
|
|
1097
|
-
? date$1.getHours() < 12
|
|
1098
|
-
? date.DATE.AM_PM["en"].AM.toLowerCase()
|
|
1099
|
-
: date.DATE.AM_PM["en"].PM.toLowerCase()
|
|
1100
|
-
: date$1.getHours() < 12
|
|
1101
|
-
? date.DATE.AM_PM["en"].AM
|
|
1102
|
-
: date.DATE.AM_PM["en"].PM;
|
|
1103
|
-
}
|
|
1104
|
-
});
|
|
1105
|
-
}
|
|
1106
|
-
// 周
|
|
1107
|
-
let weekReg = new RegExp(/(E+)/g);
|
|
1108
|
-
if (weekReg.test(format)) {
|
|
1109
|
-
format = format.replace(weekReg, function (match, $1) {
|
|
1110
|
-
return $1.length === 1
|
|
1111
|
-
? date.DATE.WEEK[lang].MINI[date$1.getDay()]
|
|
1112
|
-
: $1.length === 2
|
|
1113
|
-
? date.DATE.WEEK[lang].SHORT[date$1.getDay()]
|
|
1114
|
-
: date.DATE.WEEK[lang].FULL[date$1.getDay()];
|
|
1115
|
-
});
|
|
1116
|
-
}
|
|
1117
|
-
// 季度
|
|
1118
|
-
let quarterReg = new RegExp(/(Q+)/g);
|
|
1119
|
-
if (quarterReg.test(format)) {
|
|
1120
|
-
format = format.replace(quarterReg, function (match, $1) {
|
|
1121
|
-
return $1.length === 1
|
|
1122
|
-
? date.DATE.QUARTER[lang].MINI[Math.floor((date$1.getMonth() + 3) / 3) - 1]
|
|
1123
|
-
: $1.length === 2
|
|
1124
|
-
? date.DATE.QUARTER[lang].SHORT[Math.floor((date$1.getMonth() + 3) / 3) - 1]
|
|
1125
|
-
: date.DATE.QUARTER[lang].FULL[Math.floor((date$1.getMonth() + 3) / 3) - 1];
|
|
1126
|
-
});
|
|
1127
|
-
}
|
|
1128
|
-
// 经过上面的过滤,剩余的日期参数处理
|
|
1129
|
-
for (let k in rules) {
|
|
1130
|
-
let dateReg = new RegExp("(" + k + ")");
|
|
1131
|
-
if (dateReg.test(format)) {
|
|
1132
|
-
format = format.replace(dateReg, function (match, $1) {
|
|
1133
|
-
return $1.length === 1
|
|
1134
|
-
? rules[k]
|
|
1135
|
-
: $1.length === 2
|
|
1136
|
-
? ("00" + rules[k]).substring(("" + rules[k]).length)
|
|
1137
|
-
: ("000" + rules[k]).substring(("" + rules[k]).length);
|
|
1138
|
-
});
|
|
1139
|
-
}
|
|
1140
|
-
}
|
|
1141
|
-
return format;
|
|
1082
|
+
function fromDateUTC(date = new Date()) {
|
|
1083
|
+
return new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);
|
|
1084
|
+
}
|
|
1085
|
+
/**
|
|
1086
|
+
* 本地时区日期转 UTC 日期对象
|
|
1087
|
+
* @description 将本地时间的 Date 对象转换为 UTC 时间的 Date 对象(时间戳不变,仅调整时区偏移)
|
|
1088
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
1089
|
+
* @returns {Date} UTC 日期对象(时间戳 = 本地时间戳 - 时区偏移毫秒数)
|
|
1090
|
+
* @example
|
|
1091
|
+
* // 北京本地时间:2025-01-26 08:00:00(东8区)
|
|
1092
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
1093
|
+
* const utcDate = toDateUTC(localDate);
|
|
1094
|
+
* console.log(utcDate.toISOString()); // 2025-01-26T00:00:00.000Z(UTC时间)
|
|
1095
|
+
*/
|
|
1096
|
+
function toDateUTC(date = new Date()) {
|
|
1097
|
+
return new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
|
|
1098
|
+
}
|
|
1099
|
+
/**
|
|
1100
|
+
* 格式化日期为 UTC 字符串(符合 ISO 8601 标准)
|
|
1101
|
+
* @description 直接输出 UTC 时间的字符串,无需手动转换时区
|
|
1102
|
+
* @param {Date} date 本地日期对象,默认当前本地时间
|
|
1103
|
+
* @param {DateOptions} options 格式化配置,默认 yyyy-MM-dd HH:mm:ss
|
|
1104
|
+
* @returns {string} UTC 日期字符串
|
|
1105
|
+
* @example
|
|
1106
|
+
* const localDate = new Date('2025-01-26 08:00:00');
|
|
1107
|
+
* console.log(toUTCString(localDate)); // 2025-01-26 00:00:00
|
|
1108
|
+
*/
|
|
1109
|
+
function toDataUTCString(date = new Date(), options = { format: "yyyy-MM-dd HH:mm:ss" }) {
|
|
1110
|
+
const utcDate = toDateUTC(date);
|
|
1111
|
+
return toDateString(utcDate, options);
|
|
1142
1112
|
}
|
|
1143
1113
|
/**
|
|
1144
1114
|
* 日期字符串转为日期对象
|
|
1145
1115
|
* @description 支持日期字符串,时间戳,Unix时间戳
|
|
1146
|
-
* @param {
|
|
1116
|
+
* @param {string|number} value 日期参数
|
|
1147
1117
|
* @returns {Date} 返回日期对象
|
|
1148
1118
|
*/
|
|
1149
|
-
function
|
|
1119
|
+
function toDate(value) {
|
|
1150
1120
|
if (index$1.isNull(value))
|
|
1151
|
-
return
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1121
|
+
return;
|
|
1122
|
+
try {
|
|
1123
|
+
// 是日期字符串
|
|
1124
|
+
if (index$1.isString(value)) {
|
|
1125
|
+
return new Date(String(value).replace(/-/g, "/"));
|
|
1126
|
+
}
|
|
1127
|
+
// 是时间戳
|
|
1128
|
+
else if (index$1.isInteger(value) && String(value).length === 13) {
|
|
1129
|
+
return new Date(value);
|
|
1130
|
+
}
|
|
1131
|
+
// 是unix时间戳
|
|
1132
|
+
else if (index$1.isInteger(value) && String(value).length === 10) {
|
|
1133
|
+
return new Date(Number(value) * 1000);
|
|
1134
|
+
}
|
|
1135
|
+
// 不支持的日期格式
|
|
1136
|
+
else {
|
|
1137
|
+
console.error("Not supported date format!");
|
|
1138
|
+
return undefined;
|
|
1139
|
+
}
|
|
1155
1140
|
}
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
return new Date(value);
|
|
1141
|
+
catch (e) {
|
|
1142
|
+
console.error("Parse to Date error", e);
|
|
1159
1143
|
}
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1144
|
+
}
|
|
1145
|
+
/**
|
|
1146
|
+
* 日期对象转为日期字符串
|
|
1147
|
+
* @description 支持日期字符串,日期对象,时间戳,unix时间戳
|
|
1148
|
+
* @param {Date} date 日期参数
|
|
1149
|
+
* @param options 配置项
|
|
1150
|
+
* @returns {string} 返回日期字符串
|
|
1151
|
+
*/
|
|
1152
|
+
function toDateString(date$1, options = { format: "yyyy-MM-dd", lang: "zh" }) {
|
|
1153
|
+
const { format = "yyyy-MM-dd", lang = "zh" } = options;
|
|
1154
|
+
if (index$1.isNull(date$1))
|
|
1155
|
+
return "";
|
|
1156
|
+
try {
|
|
1157
|
+
// 判断是否是日期对象
|
|
1158
|
+
if (!index$1.isDate(date$1)) {
|
|
1159
|
+
console.error("Not a Date type!");
|
|
1160
|
+
return "";
|
|
1161
|
+
}
|
|
1162
|
+
// 日期转化替换
|
|
1163
|
+
const replaceRules = {
|
|
1164
|
+
// 年(yyyy/yy)
|
|
1165
|
+
"(y+)": (match) => {
|
|
1166
|
+
const year = date$1.getFullYear().toString();
|
|
1167
|
+
return match.length === 2 ? year.slice(-2) : year;
|
|
1168
|
+
},
|
|
1169
|
+
// 月(M/MM)
|
|
1170
|
+
"(M+)": (match) => {
|
|
1171
|
+
const month = date$1.getMonth() + 1;
|
|
1172
|
+
return match.length === 1 ? month.toString() : month.toString().padStart(2, "0");
|
|
1173
|
+
},
|
|
1174
|
+
// 日(d/dd)
|
|
1175
|
+
"(d+)": (match) => {
|
|
1176
|
+
const day = date$1.getDate();
|
|
1177
|
+
return match.length === 1 ? day.toString() : day.toString().padStart(2, "0");
|
|
1178
|
+
},
|
|
1179
|
+
// 12小时制(h/hh)
|
|
1180
|
+
"(h+)": (match) => {
|
|
1181
|
+
const hour = date$1.getHours() % 12 || 12;
|
|
1182
|
+
return match.length === 1 ? hour.toString() : hour.toString().padStart(2, "0");
|
|
1183
|
+
},
|
|
1184
|
+
// 24小时制(H/HH)
|
|
1185
|
+
"(H+)": (match) => {
|
|
1186
|
+
const hour = date$1.getHours();
|
|
1187
|
+
return match.length === 1 ? hour.toString() : hour.toString().padStart(2, "0");
|
|
1188
|
+
},
|
|
1189
|
+
// 分钟(m/mm)
|
|
1190
|
+
"(m+)": (match) => {
|
|
1191
|
+
const min = date$1.getMinutes();
|
|
1192
|
+
return match.length === 1 ? min.toString() : min.toString().padStart(2, "0");
|
|
1193
|
+
},
|
|
1194
|
+
// 秒(s/ss)
|
|
1195
|
+
"(s+)": (match) => {
|
|
1196
|
+
const sec = date$1.getSeconds();
|
|
1197
|
+
return match.length === 1 ? sec.toString() : sec.toString().padStart(2, "0");
|
|
1198
|
+
},
|
|
1199
|
+
// 毫秒(S/SS/SSS)
|
|
1200
|
+
"(S+)": (match) => {
|
|
1201
|
+
const ms = date$1.getMilliseconds();
|
|
1202
|
+
return ms.toString().padStart(match.length, "0").slice(0, match.length);
|
|
1203
|
+
},
|
|
1204
|
+
// 上午/下午(a/A/aa/AA)
|
|
1205
|
+
"([aA]+)": (match) => {
|
|
1206
|
+
const isAm = date$1.getHours() < 12;
|
|
1207
|
+
// 多语言处理
|
|
1208
|
+
if (match.length > 1) {
|
|
1209
|
+
return isAm ? date.DATE.AM_PM[lang].AM : date.DATE.AM_PM[lang].PM;
|
|
1210
|
+
}
|
|
1211
|
+
else {
|
|
1212
|
+
return isAm ? match.toLowerCase() : match.toUpperCase();
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
// 周(E/EE/EEE)
|
|
1216
|
+
"(E+)": (match) => {
|
|
1217
|
+
const day = date$1.getDay();
|
|
1218
|
+
if (match.length === 1)
|
|
1219
|
+
return date.DATE.WEEK[lang].MINI[day];
|
|
1220
|
+
if (match.length === 2)
|
|
1221
|
+
return date.DATE.WEEK[lang].SHORT[day];
|
|
1222
|
+
return date.DATE.WEEK[lang].FULL[day];
|
|
1223
|
+
},
|
|
1224
|
+
// 季度(Q/QQ/QQQ)
|
|
1225
|
+
"(Q+)": (match) => {
|
|
1226
|
+
const quarter = Math.floor((date$1.getMonth() + 3) / 3) - 1;
|
|
1227
|
+
if (match.length === 1)
|
|
1228
|
+
return date.DATE.QUARTER[lang].MINI[quarter];
|
|
1229
|
+
if (match.length === 2)
|
|
1230
|
+
return date.DATE.QUARTER[lang].SHORT[quarter];
|
|
1231
|
+
return date.DATE.QUARTER[lang].FULL[quarter];
|
|
1232
|
+
},
|
|
1233
|
+
};
|
|
1234
|
+
// 批量替换格式
|
|
1235
|
+
let result = format;
|
|
1236
|
+
Object.entries(replaceRules).forEach(([regStr, replaceFn]) => {
|
|
1237
|
+
const reg = new RegExp(regStr, "g");
|
|
1238
|
+
result = result.replace(reg, (_, match) => replaceFn(match));
|
|
1239
|
+
});
|
|
1240
|
+
return result;
|
|
1163
1241
|
}
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
return value;
|
|
1242
|
+
catch (e) {
|
|
1243
|
+
console.error("Date to String error", e);
|
|
1244
|
+
return "";
|
|
1168
1245
|
}
|
|
1169
1246
|
}
|
|
1170
1247
|
/* 内部使用的函数 */
|
|
1171
1248
|
/**
|
|
1172
1249
|
* 单个数字前自动补齐零为两位
|
|
1173
|
-
* @param {
|
|
1174
|
-
* @returns {
|
|
1250
|
+
* @param {string|number} value 可以是数字和字符串
|
|
1251
|
+
* @returns {string} 返回处理后的字符串
|
|
1175
1252
|
*/
|
|
1176
1253
|
function _digit(value) {
|
|
1177
1254
|
value = value.toString();
|
|
@@ -1187,7 +1264,7 @@ exports.addQuarter = addQuarter;
|
|
|
1187
1264
|
exports.addSeconds = addSeconds;
|
|
1188
1265
|
exports.addWeek = addWeek;
|
|
1189
1266
|
exports.addYear = addYear;
|
|
1190
|
-
exports.
|
|
1267
|
+
exports.fromDateUTC = fromDateUTC;
|
|
1191
1268
|
exports.getAge = getAge;
|
|
1192
1269
|
exports.getBetweenDates = getBetweenDates;
|
|
1193
1270
|
exports.getBetweenMonths = getBetweenMonths;
|
|
@@ -1260,7 +1337,10 @@ exports.lastYear = lastYear;
|
|
|
1260
1337
|
exports.nextMonth = nextMonth;
|
|
1261
1338
|
exports.nextWeek = nextWeek;
|
|
1262
1339
|
exports.nextYear = nextYear;
|
|
1263
|
-
exports.
|
|
1340
|
+
exports.toDataUTCString = toDataUTCString;
|
|
1341
|
+
exports.toDate = toDate;
|
|
1342
|
+
exports.toDateString = toDateString;
|
|
1343
|
+
exports.toDateUTC = toDateUTC;
|
|
1264
1344
|
exports.today = today;
|
|
1265
1345
|
exports.tomorrow = tomorrow;
|
|
1266
1346
|
exports.yesterday = yesterday;
|