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