@blazedpath/commons 0.0.8 → 0.0.9
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/blz-base/index.js +895 -893
- package/blz-cache/index.js +14 -25
- package/blz-core/index.js +349 -347
- package/blz-cryptography/index.js +49 -47
- package/blz-datetimes/index.js +350 -348
- package/blz-file/index.js +88 -83
- package/blz-hazelcast/index.js +103 -100
- package/blz-iterable/index.js +406 -404
- package/blz-json-schema/index.js +8 -6
- package/blz-jwt/index.js +92 -89
- package/blz-kafka/index.js +107 -105
- package/blz-math/index.js +129 -127
- package/blz-mongodb/index.js +35 -33
- package/blz-rds/index.js +46 -44
- package/blz-rds-mysql/index.js +23 -21
- package/blz-rds-mysqlx/index.js +22 -20
- package/blz-rds-oracle/index.js +204 -199
- package/blz-rds-postgres/index.js +22 -20
- package/blz-redis/index.js +125 -123
- package/blz-regex/index.js +24 -22
- package/blz-strings/index.js +167 -165
- package/blz-uuid/index.js +4 -2
- package/blz-yaml/index.js +19 -16
- package/package.json +1 -1
package/blz-datetimes/index.js
CHANGED
|
@@ -1,356 +1,358 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
if (strMilliseconds
|
|
5
|
-
strMilliseconds
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
else
|
|
11
|
-
return 0;
|
|
12
|
-
},
|
|
13
|
-
tryDatetime: function (value) {
|
|
14
|
-
let strType = toString.call(value);
|
|
15
|
-
if (strType === '[object Date]') {
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
else if (strType === '[object String]') {
|
|
19
|
-
let matchDatetimeUtc = /^(\d{4})-(\d{1,2})-(\d{1,2})[T,\s](\d{1,2})\:(\d{1,2})\:(\d{1,2})\.?(\d+)?Z?$/.exec(value);
|
|
20
|
-
if (matchDatetimeUtc && matchDatetimeUtc[7] !== undefined) {
|
|
21
|
-
return new Date(Date.UTC(Number(matchDatetimeUtc[1]), Number(matchDatetimeUtc[2]) - 1, Number(matchDatetimeUtc[3]), Number(matchDatetimeUtc[4]), Number(matchDatetimeUtc[5]), Number(matchDatetimeUtc[6] || 0), this.convertMilliseconds(matchDatetimeUtc[7])));
|
|
2
|
+
Dual: {
|
|
3
|
+
convertMilliseconds: function (strMilliseconds) {
|
|
4
|
+
if (strMilliseconds) {
|
|
5
|
+
if (strMilliseconds.length < 3)
|
|
6
|
+
strMilliseconds = strMilliseconds.padEnd(3, '0');
|
|
7
|
+
if (strMilliseconds.length > 3)
|
|
8
|
+
strMilliseconds = strMilliseconds.substr(0, 3);
|
|
9
|
+
return Number(strMilliseconds);
|
|
22
10
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let second = Number(matchDatetimeZone[6] || 0);
|
|
31
|
-
let millisecond = this.convertMilliseconds(matchDatetimeZone[7]);
|
|
32
|
-
let timezoneOffset = matchDatetimeZone[8];
|
|
33
|
-
if (timezoneOffset) {
|
|
34
|
-
let offsetSign = timezoneOffset[0] === "+" ? 1 : -1;
|
|
35
|
-
let [offsetHour, offsetMinute] = timezoneOffset.slice(1).split(":").map(Number);
|
|
36
|
-
hour -= offsetSign * offsetHour;
|
|
37
|
-
minute -= offsetSign * offsetMinute;
|
|
38
|
-
}
|
|
39
|
-
return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
11
|
+
else
|
|
12
|
+
return 0;
|
|
13
|
+
},
|
|
14
|
+
tryDatetime: function (value) {
|
|
15
|
+
let strType = toString.call(value);
|
|
16
|
+
if (strType === '[object Date]') {
|
|
17
|
+
return value;
|
|
40
18
|
}
|
|
41
|
-
else {
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
return
|
|
19
|
+
else if (strType === '[object String]') {
|
|
20
|
+
let matchDatetimeUtc = /^(\d{4})-(\d{1,2})-(\d{1,2})[T,\s](\d{1,2})\:(\d{1,2})\:(\d{1,2})\.?(\d+)?Z?$/.exec(value);
|
|
21
|
+
if (matchDatetimeUtc && matchDatetimeUtc[7] !== undefined) {
|
|
22
|
+
return new Date(Date.UTC(Number(matchDatetimeUtc[1]), Number(matchDatetimeUtc[2]) - 1, Number(matchDatetimeUtc[3]), Number(matchDatetimeUtc[4]), Number(matchDatetimeUtc[5]), Number(matchDatetimeUtc[6] || 0), this.convertMilliseconds(matchDatetimeUtc[7])));
|
|
23
|
+
}
|
|
24
|
+
let matchDatetimeZone = /^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{1,2}):(\d{1,2})(?:\.(\d+))?([+-]\d{2}:\d{2})?$/.exec(value);
|
|
25
|
+
if (matchDatetimeZone) { // timezone
|
|
26
|
+
let year = Number(matchDatetimeZone[1]);
|
|
27
|
+
let month = Number(matchDatetimeZone[2]) - 1; // Month is zero-based in JavaScript Date
|
|
28
|
+
let day = Number(matchDatetimeZone[3]);
|
|
29
|
+
let hour = Number(matchDatetimeZone[4]);
|
|
30
|
+
let minute = Number(matchDatetimeZone[5]);
|
|
31
|
+
let second = Number(matchDatetimeZone[6] || 0);
|
|
32
|
+
let millisecond = this.convertMilliseconds(matchDatetimeZone[7]);
|
|
33
|
+
let timezoneOffset = matchDatetimeZone[8];
|
|
34
|
+
if (timezoneOffset) {
|
|
35
|
+
let offsetSign = timezoneOffset[0] === "+" ? 1 : -1;
|
|
36
|
+
let [offsetHour, offsetMinute] = timezoneOffset.slice(1).split(":").map(Number);
|
|
37
|
+
hour -= offsetSign * offsetHour;
|
|
38
|
+
minute -= offsetSign * offsetMinute;
|
|
39
|
+
}
|
|
40
|
+
return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const probableDate = new Date(value)
|
|
44
|
+
if (probableDate.toString() !== 'Invalid Date') {
|
|
45
|
+
return probableDate
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
48
|
}
|
|
49
|
+
let err = new Error();
|
|
50
|
+
err.code = 'InvalidDatetime';
|
|
51
|
+
err.data = { value: value };
|
|
52
|
+
throw err;
|
|
53
|
+
},
|
|
54
|
+
tryDate: function (value) {
|
|
55
|
+
let strType = toString.call(value);
|
|
56
|
+
if (strType === '[object Date]') {
|
|
57
|
+
return new Date(Date.UTC(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), 0, 0, 0, 0));
|
|
58
|
+
}
|
|
59
|
+
else if (strType === '[object String]') {
|
|
60
|
+
let match = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(value);
|
|
61
|
+
if (match)
|
|
62
|
+
return new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]), 0, 0, 0, 0));
|
|
63
|
+
}
|
|
64
|
+
let err = new Error();
|
|
65
|
+
err.code = 'InvalidDate';
|
|
66
|
+
err.data = { value: value };
|
|
67
|
+
throw err;
|
|
68
|
+
},
|
|
69
|
+
tryTime: function (value) {
|
|
70
|
+
let strType = toString.call(value);
|
|
71
|
+
if (strType === '[object Date]') {
|
|
72
|
+
return new Date(Date.UTC(1970, 0, 1, value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds()));
|
|
73
|
+
}
|
|
74
|
+
else if (strType === '[object String]') {
|
|
75
|
+
let match = /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})\.?(\d+)?$/.exec(value);
|
|
76
|
+
if (match)
|
|
77
|
+
return new Date(Date.UTC(1970, 0, 1, Number(match[1]), Number(match[2]), Number(match[3]), this.convertMilliseconds(match[4])));
|
|
78
|
+
}
|
|
79
|
+
let err = new Error();
|
|
80
|
+
err.code = 'InvalidTime';
|
|
81
|
+
err.data = { value: value };
|
|
82
|
+
throw err;
|
|
83
|
+
},
|
|
84
|
+
addDays: function (value, days) {
|
|
85
|
+
if (value === null || value === undefined)
|
|
86
|
+
return null;
|
|
87
|
+
if (days === null || days === undefined)
|
|
88
|
+
return value;
|
|
89
|
+
let datetime = this.tryDatetime(value);
|
|
90
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() + days, datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
91
|
+
},
|
|
92
|
+
addHours: function (value, hours) {
|
|
93
|
+
if (value === null || value === undefined)
|
|
94
|
+
return null;
|
|
95
|
+
if (hours === null || hours === undefined)
|
|
96
|
+
return value;
|
|
97
|
+
let datetime = this.tryDatetime(value);
|
|
98
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours() + hours, datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
99
|
+
},
|
|
100
|
+
addMilliseconds: function (value, milliseconds) {
|
|
101
|
+
if (value === null || value === undefined)
|
|
102
|
+
return null;
|
|
103
|
+
if (milliseconds === null || milliseconds === undefined)
|
|
104
|
+
return value;
|
|
105
|
+
let datetime = this.tryDatetime(value);
|
|
106
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds() + milliseconds));
|
|
107
|
+
},
|
|
108
|
+
addMinutes: function (value, minutes) {
|
|
109
|
+
if (value === null || value === undefined)
|
|
110
|
+
return null;
|
|
111
|
+
if (minutes === null || minutes === undefined)
|
|
112
|
+
return value;
|
|
113
|
+
let datetime = this.tryDatetime(value);
|
|
114
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes() + minutes, datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
115
|
+
},
|
|
116
|
+
addMonths: function (value, months) {
|
|
117
|
+
if (value === null || value === undefined)
|
|
118
|
+
return null;
|
|
119
|
+
if (months === null || months === undefined)
|
|
120
|
+
return value;
|
|
121
|
+
let datetime = this.tryDatetime(value);
|
|
122
|
+
let year = datetime.getUTCFullYear();
|
|
123
|
+
let month = datetime.getUTCMonth() + months;
|
|
124
|
+
let day = datetime.getUTCDate();
|
|
125
|
+
let hour = datetime.getUTCHours();
|
|
126
|
+
let minute = datetime.getUTCMinutes();
|
|
127
|
+
let second = datetime.getUTCSeconds();
|
|
128
|
+
let millisecond = datetime.getUTCMilliseconds();
|
|
129
|
+
let targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
130
|
+
while (day > targetDatetime.getUTCDate()) {
|
|
131
|
+
day--;
|
|
132
|
+
targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
133
|
+
}
|
|
134
|
+
return targetDatetime;
|
|
135
|
+
},
|
|
136
|
+
addSeconds: function (value, seconds) {
|
|
137
|
+
if (value === null || value === undefined)
|
|
138
|
+
return null;
|
|
139
|
+
if (seconds === null || seconds === undefined)
|
|
140
|
+
return value;
|
|
141
|
+
let datetime = this.tryDatetime(value);
|
|
142
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds() + seconds, datetime.getUTCMilliseconds()));
|
|
143
|
+
},
|
|
144
|
+
addYears: function (value, years) {
|
|
145
|
+
if (value === null || value === undefined)
|
|
146
|
+
return null;
|
|
147
|
+
if (years === null || years === undefined)
|
|
148
|
+
return value;
|
|
149
|
+
let datetime = this.tryDatetime(value);
|
|
150
|
+
let year = datetime.getUTCFullYear() + years;
|
|
151
|
+
let month = datetime.getUTCMonth();
|
|
152
|
+
let day = datetime.getUTCDate();
|
|
153
|
+
let hour = datetime.getUTCHours();
|
|
154
|
+
let minute = datetime.getUTCMinutes();
|
|
155
|
+
let second = datetime.getUTCSeconds();
|
|
156
|
+
let millisecond = datetime.getUTCMilliseconds();
|
|
157
|
+
let targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
158
|
+
while (day > targetDatetime.getUTCDate()) {
|
|
159
|
+
day--;
|
|
160
|
+
targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
161
|
+
}
|
|
162
|
+
return targetDatetime;
|
|
163
|
+
},
|
|
164
|
+
date: function (year, month, day) {
|
|
165
|
+
if (year === null || year === undefined)
|
|
166
|
+
return null;
|
|
167
|
+
if (month === null || month === undefined)
|
|
168
|
+
return null;
|
|
169
|
+
if (day === null || day === undefined)
|
|
170
|
+
return null;
|
|
171
|
+
return new Date(Date.UTC(year, month - 1, day));
|
|
172
|
+
},
|
|
173
|
+
dateDiff: function (date1, date2) {
|
|
174
|
+
if (date1 === null || date1 === undefined)
|
|
175
|
+
return null;
|
|
176
|
+
if (date2 === null || date2 === undefined)
|
|
177
|
+
return date1;
|
|
178
|
+
return (this.tryDate(date1) - this.tryDate(date2)) / 86400000;
|
|
179
|
+
},
|
|
180
|
+
datetime: function (year, month, day, hour, minute, second, milliseconds) {
|
|
181
|
+
if (year === null || year === undefined)
|
|
182
|
+
return null;
|
|
183
|
+
if (month === null || month === undefined)
|
|
184
|
+
return null;
|
|
185
|
+
if (day === null || day === undefined)
|
|
186
|
+
return null;
|
|
187
|
+
if (hour === null || hour === undefined)
|
|
188
|
+
return null;
|
|
189
|
+
if (minute === null || minute === undefined)
|
|
190
|
+
return null;
|
|
191
|
+
if (second === null || second === undefined)
|
|
192
|
+
return null;
|
|
193
|
+
return new Date(Date.UTC(year, month - 1, day, hour, minute, second, 0));
|
|
194
|
+
},
|
|
195
|
+
datetimeDiff: function (datetime1, datetime2) {
|
|
196
|
+
if (datetime1 === null || datetime1 === undefined)
|
|
197
|
+
return null;
|
|
198
|
+
if (datetime2 === null || datetime2 === undefined)
|
|
199
|
+
return datetime1;
|
|
200
|
+
return this.tryDatetime(datetime1) - this.tryDatetime(datetime2);
|
|
201
|
+
},
|
|
202
|
+
day: function (value) {
|
|
203
|
+
if (value === null || value === undefined)
|
|
204
|
+
return null;
|
|
205
|
+
let datetime = this.tryDatetime(value);
|
|
206
|
+
return datetime.getUTCDate();
|
|
207
|
+
},
|
|
208
|
+
hour: function (value) {
|
|
209
|
+
if (value === null || value === undefined)
|
|
210
|
+
return null;
|
|
211
|
+
let datetime = this.tryDatetime(value);
|
|
212
|
+
return datetime.getUTCHours();
|
|
213
|
+
},
|
|
214
|
+
millisecond: function (value) {
|
|
215
|
+
if (value === null || value === undefined)
|
|
216
|
+
return null;
|
|
217
|
+
let datetime = this.tryDatetime(value);
|
|
218
|
+
return datetime.getUTCMilliseconds();
|
|
219
|
+
},
|
|
220
|
+
minute: function (value) {
|
|
221
|
+
if (value === null || value === undefined)
|
|
222
|
+
return null;
|
|
223
|
+
let datetime = this.tryDatetime(value);
|
|
224
|
+
return datetime.getUTCMinutes();
|
|
225
|
+
},
|
|
226
|
+
month: function (value) {
|
|
227
|
+
if (value === null || value === undefined)
|
|
228
|
+
return null;
|
|
229
|
+
let datetime = this.tryDatetime(value);
|
|
230
|
+
return datetime.getUTCMonth() + 1;
|
|
231
|
+
},
|
|
232
|
+
monthText: function (value) {
|
|
233
|
+
if (value === null || value === undefined)
|
|
234
|
+
return null;
|
|
235
|
+
let datetime = this.tryDatetime(value);
|
|
236
|
+
switch (datetime.getUTCMonth()) {
|
|
237
|
+
case 0: return 'January';
|
|
238
|
+
case 1: return 'February';
|
|
239
|
+
case 2: return 'March';
|
|
240
|
+
case 3: return 'April';
|
|
241
|
+
case 4: return 'May';
|
|
242
|
+
case 5: return 'June';
|
|
243
|
+
case 6: return 'July';
|
|
244
|
+
case 7: return 'August';
|
|
245
|
+
case 8: return 'September';
|
|
246
|
+
case 9: return 'October';
|
|
247
|
+
case 10: return 'November';
|
|
248
|
+
case 11: return 'December';
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
now: function () {
|
|
252
|
+
let now = new Date(Date.now());
|
|
253
|
+
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds()));
|
|
254
|
+
},
|
|
255
|
+
second: function (value) {
|
|
256
|
+
if (value === null || value === undefined)
|
|
257
|
+
return null;
|
|
258
|
+
let datetime = this.tryDatetime(value);
|
|
259
|
+
return datetime.getUTCSeconds();
|
|
260
|
+
},
|
|
261
|
+
subtractDays: function (value, days) {
|
|
262
|
+
if (value === null || value === undefined)
|
|
263
|
+
return null;
|
|
264
|
+
if (days === null || days === undefined)
|
|
265
|
+
return value;
|
|
266
|
+
let datetime = this.tryDatetime(value);
|
|
267
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() - days, datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
268
|
+
},
|
|
269
|
+
subtractHours: function (value, hours) {
|
|
270
|
+
if (value === null || value === undefined)
|
|
271
|
+
return null;
|
|
272
|
+
if (hours === null || hours === undefined)
|
|
273
|
+
return value;
|
|
274
|
+
let datetime = this.tryDatetime(value);
|
|
275
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours() - hours, datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
276
|
+
},
|
|
277
|
+
subtractMilliseconds: function (value, milliseconds) {
|
|
278
|
+
if (value === null || value === undefined)
|
|
279
|
+
return null;
|
|
280
|
+
if (milliseconds === null || milliseconds === undefined)
|
|
281
|
+
return value;
|
|
282
|
+
let datetime = this.tryDatetime(value);
|
|
283
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds() - milliseconds));
|
|
284
|
+
},
|
|
285
|
+
subtractMinutes: function (value, minutes) {
|
|
286
|
+
if (value === null || value === undefined)
|
|
287
|
+
return null;
|
|
288
|
+
if (minutes === null || minutes === undefined)
|
|
289
|
+
return value;
|
|
290
|
+
let datetime = this.tryDatetime(value);
|
|
291
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes() - minutes, datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
292
|
+
},
|
|
293
|
+
subtractSeconds: function (value, seconds) {
|
|
294
|
+
if (value === null || value === undefined)
|
|
295
|
+
return null;
|
|
296
|
+
if (seconds === null || seconds === undefined)
|
|
297
|
+
return value;
|
|
298
|
+
let datetime = this.tryDatetime(value);
|
|
299
|
+
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds() - seconds, datetime.getUTCMilliseconds()));
|
|
300
|
+
},
|
|
301
|
+
time: function (hour, minute, second, milliseconds) {
|
|
302
|
+
if (hour === null || hour === undefined)
|
|
303
|
+
return null;
|
|
304
|
+
if (minute === null || minute === undefined)
|
|
305
|
+
return null;
|
|
306
|
+
if (second === null || second === undefined)
|
|
307
|
+
return null;
|
|
308
|
+
return new Date(Date.UTC(1970, 0, 1, hour, minute, second, 0));
|
|
309
|
+
},
|
|
310
|
+
timeDiff: function (time1, time2) {
|
|
311
|
+
if (time1 === null || time1 === undefined)
|
|
312
|
+
return null;
|
|
313
|
+
if (time2 === null || time2 === undefined)
|
|
314
|
+
return time1;
|
|
315
|
+
return this.tryTime(time1) - this.tryTime(time2);
|
|
316
|
+
},
|
|
317
|
+
today: function () {
|
|
318
|
+
let now = new Date(Date.now());
|
|
319
|
+
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 0, 0, 0, 0));
|
|
320
|
+
},
|
|
321
|
+
week: function (value) {
|
|
322
|
+
if (value === null || value === undefined)
|
|
323
|
+
return null;
|
|
324
|
+
let datetime = this.tryDatetime(value);
|
|
325
|
+
let d = new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate()));
|
|
326
|
+
let dayNum = d.getUTCDay() || 7;
|
|
327
|
+
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
|
|
328
|
+
let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
329
|
+
return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
|
330
|
+
},
|
|
331
|
+
weekDay: function (value) {
|
|
332
|
+
if (value === null || value === undefined)
|
|
333
|
+
return null;
|
|
334
|
+
let datetime = this.tryDatetime(value);
|
|
335
|
+
return datetime.getUTCDay();
|
|
336
|
+
},
|
|
337
|
+
weekDayText: function (value) {
|
|
338
|
+
if (value === null || value === undefined)
|
|
339
|
+
return null;
|
|
340
|
+
let datetime = this.tryDatetime(value);
|
|
341
|
+
switch (datetime.getUTCDay()) {
|
|
342
|
+
case 0: return 'Sunday';
|
|
343
|
+
case 1: return 'Monday';
|
|
344
|
+
case 2: return 'Tuesday';
|
|
345
|
+
case 3: return 'Wednesday';
|
|
346
|
+
case 4: return 'Thursday';
|
|
347
|
+
case 5: return 'Friday';
|
|
348
|
+
case 6: return 'Saturday';
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
year: function (value) {
|
|
352
|
+
if (value === null || value === undefined)
|
|
353
|
+
return null;
|
|
354
|
+
let datetime = this.tryDatetime(value);
|
|
355
|
+
return datetime.getUTCFullYear();
|
|
47
356
|
}
|
|
48
|
-
let err = new Error();
|
|
49
|
-
err.code = 'InvalidDatetime';
|
|
50
|
-
err.data = { value: value };
|
|
51
|
-
throw err;
|
|
52
|
-
},
|
|
53
|
-
tryDate: function (value) {
|
|
54
|
-
let strType = toString.call(value);
|
|
55
|
-
if (strType === '[object Date]') {
|
|
56
|
-
return new Date(Date.UTC(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), 0, 0, 0, 0));
|
|
57
|
-
}
|
|
58
|
-
else if (strType === '[object String]') {
|
|
59
|
-
let match = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(value);
|
|
60
|
-
if (match)
|
|
61
|
-
return new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]), 0, 0, 0, 0));
|
|
62
|
-
}
|
|
63
|
-
let err = new Error();
|
|
64
|
-
err.code = 'InvalidDate';
|
|
65
|
-
err.data = { value: value };
|
|
66
|
-
throw err;
|
|
67
|
-
},
|
|
68
|
-
tryTime: function (value) {
|
|
69
|
-
let strType = toString.call(value);
|
|
70
|
-
if (strType === '[object Date]') {
|
|
71
|
-
return new Date(Date.UTC(1970, 0, 1, value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds()));
|
|
72
|
-
}
|
|
73
|
-
else if (strType === '[object String]') {
|
|
74
|
-
let match = /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})\.?(\d+)?$/.exec(value);
|
|
75
|
-
if (match)
|
|
76
|
-
return new Date(Date.UTC(1970, 0, 1, Number(match[1]), Number(match[2]), Number(match[3]), this.convertMilliseconds(match[4])));
|
|
77
|
-
}
|
|
78
|
-
let err = new Error();
|
|
79
|
-
err.code = 'InvalidTime';
|
|
80
|
-
err.data = { value: value };
|
|
81
|
-
throw err;
|
|
82
|
-
},
|
|
83
|
-
addDays: function (value, days) {
|
|
84
|
-
if (value === null || value === undefined)
|
|
85
|
-
return null;
|
|
86
|
-
if (days === null || days === undefined)
|
|
87
|
-
return value;
|
|
88
|
-
let datetime = this.tryDatetime(value);
|
|
89
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() + days, datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
90
|
-
},
|
|
91
|
-
addHours: function (value, hours) {
|
|
92
|
-
if (value === null || value === undefined)
|
|
93
|
-
return null;
|
|
94
|
-
if (hours === null || hours === undefined)
|
|
95
|
-
return value;
|
|
96
|
-
let datetime = this.tryDatetime(value);
|
|
97
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours() + hours, datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
98
|
-
},
|
|
99
|
-
addMilliseconds: function (value, milliseconds) {
|
|
100
|
-
if (value === null || value === undefined)
|
|
101
|
-
return null;
|
|
102
|
-
if (milliseconds === null || milliseconds === undefined)
|
|
103
|
-
return value;
|
|
104
|
-
let datetime = this.tryDatetime(value);
|
|
105
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds() + milliseconds));
|
|
106
|
-
},
|
|
107
|
-
addMinutes: function (value, minutes) {
|
|
108
|
-
if (value === null || value === undefined)
|
|
109
|
-
return null;
|
|
110
|
-
if (minutes === null || minutes === undefined)
|
|
111
|
-
return value;
|
|
112
|
-
let datetime = this.tryDatetime(value);
|
|
113
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes() + minutes, datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
114
|
-
},
|
|
115
|
-
addMonths: function (value, months) {
|
|
116
|
-
if (value === null || value === undefined)
|
|
117
|
-
return null;
|
|
118
|
-
if (months === null || months === undefined)
|
|
119
|
-
return value;
|
|
120
|
-
let datetime = this.tryDatetime(value);
|
|
121
|
-
let year = datetime.getUTCFullYear();
|
|
122
|
-
let month = datetime.getUTCMonth() + months;
|
|
123
|
-
let day = datetime.getUTCDate();
|
|
124
|
-
let hour = datetime.getUTCHours();
|
|
125
|
-
let minute = datetime.getUTCMinutes();
|
|
126
|
-
let second = datetime.getUTCSeconds();
|
|
127
|
-
let millisecond = datetime.getUTCMilliseconds();
|
|
128
|
-
let targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
129
|
-
while (day > targetDatetime.getUTCDate()) {
|
|
130
|
-
day--;
|
|
131
|
-
targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
132
|
-
}
|
|
133
|
-
return targetDatetime;
|
|
134
|
-
},
|
|
135
|
-
addSeconds: function (value, seconds) {
|
|
136
|
-
if (value === null || value === undefined)
|
|
137
|
-
return null;
|
|
138
|
-
if (seconds === null || seconds === undefined)
|
|
139
|
-
return value;
|
|
140
|
-
let datetime = this.tryDatetime(value);
|
|
141
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds() + seconds, datetime.getUTCMilliseconds()));
|
|
142
|
-
},
|
|
143
|
-
addYears: function (value, years) {
|
|
144
|
-
if (value === null || value === undefined)
|
|
145
|
-
return null;
|
|
146
|
-
if (years === null || years === undefined)
|
|
147
|
-
return value;
|
|
148
|
-
let datetime = this.tryDatetime(value);
|
|
149
|
-
let year = datetime.getUTCFullYear() + years;
|
|
150
|
-
let month = datetime.getUTCMonth();
|
|
151
|
-
let day = datetime.getUTCDate();
|
|
152
|
-
let hour = datetime.getUTCHours();
|
|
153
|
-
let minute = datetime.getUTCMinutes();
|
|
154
|
-
let second = datetime.getUTCSeconds();
|
|
155
|
-
let millisecond = datetime.getUTCMilliseconds();
|
|
156
|
-
let targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
157
|
-
while (day > targetDatetime.getUTCDate()) {
|
|
158
|
-
day--;
|
|
159
|
-
targetDatetime = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
160
|
-
}
|
|
161
|
-
return targetDatetime;
|
|
162
|
-
},
|
|
163
|
-
date: function (year, month, day) {
|
|
164
|
-
if (year === null || year === undefined)
|
|
165
|
-
return null;
|
|
166
|
-
if (month === null ||month === undefined)
|
|
167
|
-
return null;
|
|
168
|
-
if (day === null || day === undefined)
|
|
169
|
-
return null;
|
|
170
|
-
return new Date(Date.UTC(year, month - 1, day));
|
|
171
|
-
},
|
|
172
|
-
dateDiff: function (date1, date2) {
|
|
173
|
-
if (date1 === null || date1 === undefined)
|
|
174
|
-
return null;
|
|
175
|
-
if (date2 === null || date2 === undefined)
|
|
176
|
-
return date1;
|
|
177
|
-
return (this.tryDate(date1) - this.tryDate(date2)) / 86400000;
|
|
178
|
-
},
|
|
179
|
-
datetime: function (year, month, day, hour, minute, second, milliseconds) {
|
|
180
|
-
if (year === null || year === undefined)
|
|
181
|
-
return null;
|
|
182
|
-
if (month === null ||month === undefined)
|
|
183
|
-
return null;
|
|
184
|
-
if (day === null || day === undefined)
|
|
185
|
-
return null;
|
|
186
|
-
if (hour === null || hour === undefined)
|
|
187
|
-
return null;
|
|
188
|
-
if (minute === null || minute === undefined)
|
|
189
|
-
return null;
|
|
190
|
-
if (second === null || second === undefined)
|
|
191
|
-
return null;
|
|
192
|
-
return new Date(Date.UTC(year, month - 1, day, hour, minute, second, 0));
|
|
193
|
-
},
|
|
194
|
-
datetimeDiff: function (datetime1, datetime2) {
|
|
195
|
-
if (datetime1 === null || datetime1 === undefined)
|
|
196
|
-
return null;
|
|
197
|
-
if (datetime2 === null || datetime2 === undefined)
|
|
198
|
-
return datetime1;
|
|
199
|
-
return this.tryDatetime(datetime1) - this.tryDatetime(datetime2);
|
|
200
|
-
},
|
|
201
|
-
day: function (value) {
|
|
202
|
-
if (value === null || value === undefined)
|
|
203
|
-
return null;
|
|
204
|
-
let datetime = this.tryDatetime(value);
|
|
205
|
-
return datetime.getUTCDate();
|
|
206
|
-
},
|
|
207
|
-
hour: function (value) {
|
|
208
|
-
if (value === null || value === undefined)
|
|
209
|
-
return null;
|
|
210
|
-
let datetime = this.tryDatetime(value);
|
|
211
|
-
return datetime.getUTCHours();
|
|
212
|
-
},
|
|
213
|
-
millisecond: function (value) {
|
|
214
|
-
if (value === null || value === undefined)
|
|
215
|
-
return null;
|
|
216
|
-
let datetime = this.tryDatetime(value);
|
|
217
|
-
return datetime.getUTCMilliseconds();
|
|
218
|
-
},
|
|
219
|
-
minute: function (value) {
|
|
220
|
-
if (value === null || value === undefined)
|
|
221
|
-
return null;
|
|
222
|
-
let datetime = this.tryDatetime(value);
|
|
223
|
-
return datetime.getUTCMinutes();
|
|
224
|
-
},
|
|
225
|
-
month: function (value) {
|
|
226
|
-
if (value === null || value === undefined)
|
|
227
|
-
return null;
|
|
228
|
-
let datetime = this.tryDatetime(value);
|
|
229
|
-
return datetime.getUTCMonth() + 1;
|
|
230
|
-
},
|
|
231
|
-
monthText: function (value) {
|
|
232
|
-
if (value === null || value === undefined)
|
|
233
|
-
return null;
|
|
234
|
-
let datetime = this.tryDatetime(value);
|
|
235
|
-
switch (datetime.getUTCMonth()) {
|
|
236
|
-
case 0: return 'January';
|
|
237
|
-
case 1: return 'February';
|
|
238
|
-
case 2: return 'March';
|
|
239
|
-
case 3: return 'April';
|
|
240
|
-
case 4: return 'May';
|
|
241
|
-
case 5: return 'June';
|
|
242
|
-
case 6: return 'July';
|
|
243
|
-
case 7: return 'August';
|
|
244
|
-
case 8: return 'September';
|
|
245
|
-
case 9: return 'October';
|
|
246
|
-
case 10: return 'November';
|
|
247
|
-
case 11: return 'December';
|
|
248
|
-
}
|
|
249
|
-
},
|
|
250
|
-
now: function () {
|
|
251
|
-
let now = new Date(Date.now());
|
|
252
|
-
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds()));
|
|
253
|
-
},
|
|
254
|
-
second: function (value) {
|
|
255
|
-
if (value === null || value === undefined)
|
|
256
|
-
return null;
|
|
257
|
-
let datetime = this.tryDatetime(value);
|
|
258
|
-
return datetime.getUTCSeconds();
|
|
259
|
-
},
|
|
260
|
-
subtractDays: function (value, days) {
|
|
261
|
-
if (value === null || value === undefined)
|
|
262
|
-
return null;
|
|
263
|
-
if (days === null || days === undefined)
|
|
264
|
-
return value;
|
|
265
|
-
let datetime = this.tryDatetime(value);
|
|
266
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() - days, datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
267
|
-
},
|
|
268
|
-
subtractHours: function (value, hours) {
|
|
269
|
-
if (value === null || value === undefined)
|
|
270
|
-
return null;
|
|
271
|
-
if (hours === null || hours === undefined)
|
|
272
|
-
return value;
|
|
273
|
-
let datetime = this.tryDatetime(value);
|
|
274
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours() - hours, datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
275
|
-
},
|
|
276
|
-
subtractMilliseconds: function (value, milliseconds) {
|
|
277
|
-
if (value === null || value === undefined)
|
|
278
|
-
return null;
|
|
279
|
-
if (milliseconds === null || milliseconds === undefined)
|
|
280
|
-
return value;
|
|
281
|
-
let datetime = this.tryDatetime(value);
|
|
282
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds(), datetime.getUTCMilliseconds() - milliseconds));
|
|
283
|
-
},
|
|
284
|
-
subtractMinutes: function (value, minutes) {
|
|
285
|
-
if (value === null || value === undefined)
|
|
286
|
-
return null;
|
|
287
|
-
if (minutes === null || minutes === undefined)
|
|
288
|
-
return value;
|
|
289
|
-
let datetime = this.tryDatetime(value);
|
|
290
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes() - minutes, datetime.getUTCSeconds(), datetime.getUTCMilliseconds()));
|
|
291
|
-
},
|
|
292
|
-
subtractSeconds: function (value, seconds) {
|
|
293
|
-
if (value === null || value === undefined)
|
|
294
|
-
return null;
|
|
295
|
-
if (seconds === null || seconds === undefined)
|
|
296
|
-
return value;
|
|
297
|
-
let datetime = this.tryDatetime(value);
|
|
298
|
-
return new Date(Date.UTC(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate(), datetime.getUTCHours(), datetime.getUTCMinutes(), datetime.getUTCSeconds() - seconds, datetime.getUTCMilliseconds()));
|
|
299
|
-
},
|
|
300
|
-
time: function (hour, minute, second, milliseconds) {
|
|
301
|
-
if (hour === null || hour === undefined)
|
|
302
|
-
return null;
|
|
303
|
-
if (minute === null || minute === undefined)
|
|
304
|
-
return null;
|
|
305
|
-
if (second === null || second === undefined)
|
|
306
|
-
return null;
|
|
307
|
-
return new Date(Date.UTC(1970, 0, 1, hour, minute, second, 0));
|
|
308
|
-
},
|
|
309
|
-
timeDiff: function (time1, time2) {
|
|
310
|
-
if (time1 === null || time1 === undefined)
|
|
311
|
-
return null;
|
|
312
|
-
if (time2 === null || time2 === undefined)
|
|
313
|
-
return time1;
|
|
314
|
-
return this.tryTime(time1) - this.tryTime(time2);
|
|
315
|
-
},
|
|
316
|
-
today: function () {
|
|
317
|
-
let now = new Date(Date.now());
|
|
318
|
-
return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 0, 0, 0, 0));
|
|
319
|
-
},
|
|
320
|
-
week: function (value) {
|
|
321
|
-
if (value === null || value === undefined)
|
|
322
|
-
return null;
|
|
323
|
-
let datetime = this.tryDatetime(value);
|
|
324
|
-
let d = new Date( Date.UTC( datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() ) );
|
|
325
|
-
let dayNum = d.getUTCDay() || 7;
|
|
326
|
-
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
|
|
327
|
-
let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
328
|
-
return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
|
329
|
-
},
|
|
330
|
-
weekDay: function (value) {
|
|
331
|
-
if (value === null || value === undefined)
|
|
332
|
-
return null;
|
|
333
|
-
let datetime = this.tryDatetime(value);
|
|
334
|
-
return datetime.getUTCDay();
|
|
335
|
-
},
|
|
336
|
-
weekDayText: function (value) {
|
|
337
|
-
if (value === null || value === undefined)
|
|
338
|
-
return null;
|
|
339
|
-
let datetime = this.tryDatetime(value);
|
|
340
|
-
switch (datetime.getUTCDay()) {
|
|
341
|
-
case 0: return 'Sunday';
|
|
342
|
-
case 1: return 'Monday';
|
|
343
|
-
case 2: return 'Tuesday';
|
|
344
|
-
case 3: return 'Wednesday';
|
|
345
|
-
case 4: return 'Thursday';
|
|
346
|
-
case 5: return 'Friday';
|
|
347
|
-
case 6: return 'Saturday';
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
year: function (value) {
|
|
351
|
-
if (value === null || value === undefined)
|
|
352
|
-
return null;
|
|
353
|
-
let datetime = this.tryDatetime(value);
|
|
354
|
-
return datetime.getUTCFullYear();
|
|
355
357
|
}
|
|
356
358
|
};
|