@formkit/tempo 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addDay.d.ts +4 -3
- package/dist/addDay.mjs.map +1 -1
- package/dist/addHour.d.ts +4 -3
- package/dist/addHour.mjs.map +1 -1
- package/dist/addMillisecond.d.ts +10 -0
- package/dist/addMillisecond.mjs +11 -0
- package/dist/addMillisecond.mjs.map +1 -0
- package/dist/addMinute.d.ts +5 -4
- package/dist/addMinute.mjs.map +1 -1
- package/dist/addMonth.d.ts +5 -5
- package/dist/addMonth.mjs +1 -2
- package/dist/addMonth.mjs.map +1 -1
- package/dist/addSecond.d.ts +4 -3
- package/dist/addSecond.mjs.map +1 -1
- package/dist/addYear.d.ts +5 -5
- package/dist/addYear.mjs +1 -2
- package/dist/addYear.mjs.map +1 -1
- package/dist/ap.mjs +1 -2
- package/dist/ap.mjs.map +1 -1
- package/dist/applyOffset.d.ts +5 -5
- package/dist/applyOffset.mjs +5 -11
- package/dist/applyOffset.mjs.map +1 -1
- package/dist/bundle.d.ts +256 -115
- package/dist/bundle.mjs +158 -142
- package/dist/bundle.mjs.map +1 -1
- package/dist/common.d.ts +27 -7
- package/dist/common.mjs +47 -42
- package/dist/common.mjs.map +1 -1
- package/dist/date.d.ts +2 -2
- package/dist/date.mjs +1 -3
- package/dist/date.mjs.map +1 -1
- package/dist/dayEnd.d.ts +3 -3
- package/dist/dayEnd.mjs.map +1 -1
- package/dist/dayOfYear.d.ts +3 -3
- package/dist/dayOfYear.mjs.map +1 -1
- package/dist/dayStart.d.ts +3 -3
- package/dist/dayStart.mjs +1 -1
- package/dist/dayStart.mjs.map +1 -1
- package/dist/diffDays.d.ts +12 -5
- package/dist/diffDays.mjs +1 -0
- package/dist/diffDays.mjs.map +1 -1
- package/dist/diffHours.d.ts +12 -5
- package/dist/diffHours.mjs +1 -0
- package/dist/diffHours.mjs.map +1 -1
- package/dist/diffMilliseconds.d.ts +10 -4
- package/dist/diffMilliseconds.mjs.map +1 -1
- package/dist/diffMinutes.d.ts +11 -3
- package/dist/diffMinutes.mjs +5 -1
- package/dist/diffMinutes.mjs.map +1 -1
- package/dist/diffMonths.d.ts +10 -4
- package/dist/diffMonths.mjs.map +1 -1
- package/dist/diffSeconds.d.ts +12 -5
- package/dist/diffSeconds.mjs +5 -1
- package/dist/diffSeconds.mjs.map +1 -1
- package/dist/diffWeeks.d.ts +10 -3
- package/dist/diffWeeks.mjs.map +1 -1
- package/dist/diffYears.d.ts +10 -4
- package/dist/diffYears.mjs +4 -1
- package/dist/diffYears.mjs.map +1 -1
- package/dist/format.mjs +2 -3
- package/dist/format.mjs.map +1 -1
- package/dist/hourEnd.d.ts +3 -3
- package/dist/hourEnd.mjs.map +1 -1
- package/dist/hourStart.d.ts +3 -3
- package/dist/hourStart.mjs +1 -1
- package/dist/hourStart.mjs.map +1 -1
- package/dist/index.cjs +165 -145
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +256 -115
- package/dist/index.d.ts +5 -1
- package/dist/index.mjs +8 -0
- package/dist/index.mjs.map +1 -1
- package/dist/isAfter.d.ts +6 -6
- package/dist/isAfter.mjs.map +1 -1
- package/dist/isBefore.d.ts +5 -5
- package/dist/isBefore.mjs.map +1 -1
- package/dist/isEqual.d.ts +13 -4
- package/dist/isEqual.mjs.map +1 -1
- package/dist/isFuture.d.ts +10 -0
- package/dist/isFuture.mjs +9 -0
- package/dist/isFuture.mjs.map +1 -0
- package/dist/isPast.d.ts +10 -0
- package/dist/isPast.mjs +9 -0
- package/dist/isPast.mjs.map +1 -0
- package/dist/iso8601.d.ts +1 -1
- package/dist/iso8601.mjs +4 -7
- package/dist/iso8601.mjs.map +1 -1
- package/dist/minuteEnd.d.ts +3 -3
- package/dist/minuteEnd.mjs.map +1 -1
- package/dist/minuteStart.d.ts +3 -3
- package/dist/minuteStart.mjs +1 -1
- package/dist/minuteStart.mjs.map +1 -1
- package/dist/monthDays.d.ts +3 -3
- package/dist/monthDays.mjs.map +1 -1
- package/dist/monthEnd.d.ts +3 -3
- package/dist/monthEnd.mjs.map +1 -1
- package/dist/monthStart.d.ts +3 -3
- package/dist/monthStart.mjs +1 -1
- package/dist/monthStart.mjs.map +1 -1
- package/dist/nearestDay.d.ts +3 -3
- package/dist/nearestDay.mjs +2 -4
- package/dist/nearestDay.mjs.map +1 -1
- package/dist/offset.d.ts +5 -5
- package/dist/offset.mjs +3 -5
- package/dist/offset.mjs.map +1 -1
- package/dist/parse.mjs +33 -23
- package/dist/parse.mjs.map +1 -1
- package/dist/parts.mjs +14 -24
- package/dist/parts.mjs.map +1 -1
- package/dist/range.mjs +1 -2
- package/dist/range.mjs.map +1 -1
- package/dist/removeOffset.d.ts +4 -4
- package/dist/removeOffset.mjs.map +1 -1
- package/dist/sameDay.d.ts +8 -2
- package/dist/sameDay.mjs.map +1 -1
- package/dist/sameHour.d.ts +8 -2
- package/dist/sameHour.mjs.map +1 -1
- package/dist/sameMillisecond.d.ts +16 -0
- package/dist/sameMillisecond.mjs +11 -0
- package/dist/sameMillisecond.mjs.map +1 -0
- package/dist/sameMinute.d.ts +8 -2
- package/dist/sameMinute.mjs.map +1 -1
- package/dist/sameMonth.d.ts +16 -0
- package/dist/sameMonth.mjs +11 -0
- package/dist/sameMonth.mjs.map +1 -0
- package/dist/sameSecond.d.ts +8 -2
- package/dist/sameSecond.mjs.map +1 -1
- package/dist/sameYear.d.ts +8 -2
- package/dist/sameYear.mjs.map +1 -1
- package/dist/types.d.ts +15 -7
- package/dist/tzDate.d.ts +5 -3
- package/dist/tzDate.mjs.map +1 -1
- package/dist/weekEnd.d.ts +4 -4
- package/dist/weekEnd.mjs +1 -1
- package/dist/weekEnd.mjs.map +1 -1
- package/dist/weekStart.d.ts +4 -4
- package/dist/weekStart.mjs +2 -3
- package/dist/weekStart.mjs.map +1 -1
- package/dist/yearDays.d.ts +3 -3
- package/dist/yearDays.mjs.map +1 -1
- package/dist/yearEnd.d.ts +3 -3
- package/dist/yearEnd.mjs +1 -2
- package/dist/yearEnd.mjs.map +1 -1
- package/dist/yearStart.d.ts +3 -3
- package/dist/yearStart.mjs +2 -3
- package/dist/yearStart.mjs.map +1 -1
- package/package.json +32 -23
package/dist/index.cjs
CHANGED
|
@@ -18,10 +18,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
23
|
addDay: () => addDay,
|
|
24
24
|
addHour: () => addHour,
|
|
25
|
+
addMillisecond: () => addMillisecond,
|
|
25
26
|
addMinute: () => addMinute,
|
|
26
27
|
addMonth: () => addMonth,
|
|
27
28
|
addSecond: () => addSecond,
|
|
@@ -48,6 +49,8 @@ __export(src_exports, {
|
|
|
48
49
|
isAfter: () => isAfter,
|
|
49
50
|
isBefore: () => isBefore,
|
|
50
51
|
isEqual: () => isEqual,
|
|
52
|
+
isFuture: () => isFuture,
|
|
53
|
+
isPast: () => isPast,
|
|
51
54
|
iso8601: () => iso8601,
|
|
52
55
|
minuteEnd: () => minuteEnd,
|
|
53
56
|
minuteStart: () => minuteStart,
|
|
@@ -63,6 +66,7 @@ __export(src_exports, {
|
|
|
63
66
|
removeOffset: () => removeOffset,
|
|
64
67
|
sameDay: () => sameDay,
|
|
65
68
|
sameHour: () => sameHour,
|
|
69
|
+
sameMillisecond: () => sameMillisecond,
|
|
66
70
|
sameMinute: () => sameMinute,
|
|
67
71
|
sameSecond: () => sameSecond,
|
|
68
72
|
sameYear: () => sameYear,
|
|
@@ -73,25 +77,22 @@ __export(src_exports, {
|
|
|
73
77
|
yearEnd: () => yearEnd,
|
|
74
78
|
yearStart: () => yearStart
|
|
75
79
|
});
|
|
76
|
-
module.exports = __toCommonJS(
|
|
80
|
+
module.exports = __toCommonJS(index_exports);
|
|
77
81
|
|
|
78
82
|
// src/iso8601.ts
|
|
79
|
-
var iso8601Match = /^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2})?$/;
|
|
83
|
+
var iso8601Match = /^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2}(?::?[0-9]{2})?)?$/;
|
|
80
84
|
function iso8601(date2) {
|
|
81
85
|
const matches = date2.match(iso8601Match);
|
|
82
86
|
if (matches) {
|
|
83
87
|
const month = Number(matches[2]);
|
|
84
|
-
if (month < 1 || month > 12)
|
|
85
|
-
return false;
|
|
88
|
+
if (month < 1 || month > 12) return false;
|
|
86
89
|
if (typeof matches[3] !== void 0) {
|
|
87
90
|
const date3 = Number(matches[3]);
|
|
88
|
-
if (date3 < 1 || date3 > 31)
|
|
89
|
-
return false;
|
|
91
|
+
if (date3 < 1 || date3 > 31) return false;
|
|
90
92
|
}
|
|
91
93
|
if (typeof matches[4] !== void 0) {
|
|
92
94
|
const hours = Number(matches[4]);
|
|
93
|
-
if (hours < 0 || hours > 23)
|
|
94
|
-
return false;
|
|
95
|
+
if (hours < 0 || hours > 23) return false;
|
|
95
96
|
}
|
|
96
97
|
return true;
|
|
97
98
|
}
|
|
@@ -111,9 +112,7 @@ function date(date2) {
|
|
|
111
112
|
date2 = /* @__PURE__ */ new Date();
|
|
112
113
|
}
|
|
113
114
|
if (date2 instanceof Date) {
|
|
114
|
-
|
|
115
|
-
d.setMilliseconds(0);
|
|
116
|
-
return d;
|
|
115
|
+
return new Date(date2);
|
|
117
116
|
}
|
|
118
117
|
date2 = date2.trim();
|
|
119
118
|
if (iso8601(date2)) {
|
|
@@ -148,8 +147,7 @@ function monthDays(inputDate) {
|
|
|
148
147
|
function addMonth(inputDate, count = 1, dateOverflow = false) {
|
|
149
148
|
const d = date(inputDate);
|
|
150
149
|
const dayOfMonth = d.getDate();
|
|
151
|
-
if (!dateOverflow)
|
|
152
|
-
d.setDate(1);
|
|
150
|
+
if (!dateOverflow) d.setDate(1);
|
|
153
151
|
d.setMonth(d.getMonth() + count);
|
|
154
152
|
if (!dateOverflow) {
|
|
155
153
|
const daysInMonth = monthDays(d);
|
|
@@ -162,8 +160,7 @@ function addMonth(inputDate, count = 1, dateOverflow = false) {
|
|
|
162
160
|
function addYear(inputDate, count = 1, dateOverflow = false) {
|
|
163
161
|
const d = date(inputDate);
|
|
164
162
|
const dayOfMonth = d.getDate();
|
|
165
|
-
if (!dateOverflow)
|
|
166
|
-
d.setDate(1);
|
|
163
|
+
if (!dateOverflow) d.setDate(1);
|
|
167
164
|
d.setFullYear(d.getFullYear() + count);
|
|
168
165
|
if (!dateOverflow) {
|
|
169
166
|
const daysInMonth = monthDays(d);
|
|
@@ -193,6 +190,13 @@ function addSecond(inputDate, count = 1) {
|
|
|
193
190
|
return d;
|
|
194
191
|
}
|
|
195
192
|
|
|
193
|
+
// src/addMillisecond.ts
|
|
194
|
+
function addMillisecond(inputDate, count = 1) {
|
|
195
|
+
const d = date(inputDate);
|
|
196
|
+
d.setMilliseconds(d.getMilliseconds() + count);
|
|
197
|
+
return d;
|
|
198
|
+
}
|
|
199
|
+
|
|
196
200
|
// src/common.ts
|
|
197
201
|
var specDate = "1999-03-04T02:05:01.000Z";
|
|
198
202
|
var memoParts = /* @__PURE__ */ new Map();
|
|
@@ -225,6 +229,9 @@ var clock12 = [
|
|
|
225
229
|
["a", { dayPeriod: "narrow" }],
|
|
226
230
|
["A", { dayPeriod: "narrow" }]
|
|
227
231
|
];
|
|
232
|
+
var fractionalSeconds = [
|
|
233
|
+
["SSS", { fractionalSecond: "3-digit" }]
|
|
234
|
+
];
|
|
228
235
|
var fixedLength = {
|
|
229
236
|
DD: 2,
|
|
230
237
|
HH: 2,
|
|
@@ -236,6 +243,12 @@ var fixedLength = {
|
|
|
236
243
|
ss: 2
|
|
237
244
|
};
|
|
238
245
|
function fixedLengthByOffset(offsetString) {
|
|
246
|
+
if (/^[+-]\d{2}:\d{2}:\d{2}/.test(offsetString)) {
|
|
247
|
+
return 9;
|
|
248
|
+
}
|
|
249
|
+
if (/^[+-]\d{6}/.test(offsetString)) {
|
|
250
|
+
return 8;
|
|
251
|
+
}
|
|
239
252
|
if (/^[+-]\d{2}:\d{2}/.test(offsetString)) {
|
|
240
253
|
return 6;
|
|
241
254
|
}
|
|
@@ -246,17 +259,12 @@ function fixedLengthByOffset(offsetString) {
|
|
|
246
259
|
}
|
|
247
260
|
var genitiveTokens = ["MMMM", "MMM", "dddd", "ddd"];
|
|
248
261
|
var tokens = /* @__PURE__ */ new Map(
|
|
249
|
-
/* @__PURE__ */ [...clockAgnostic, ...clock24, ...clock12].map((format2) => {
|
|
262
|
+
/* @__PURE__ */ [...clockAgnostic, ...clock24, ...clock12, ...fractionalSeconds].map((format2) => {
|
|
250
263
|
return [format2[0], format2];
|
|
251
264
|
})
|
|
252
265
|
);
|
|
253
266
|
var dayPeriodMap = /* @__PURE__ */ new Map();
|
|
254
|
-
var styles = [
|
|
255
|
-
"full",
|
|
256
|
-
"long",
|
|
257
|
-
"medium",
|
|
258
|
-
"short"
|
|
259
|
-
];
|
|
267
|
+
var styles = ["full", "long", "medium", "short"];
|
|
260
268
|
var two = (n) => String(n).padStart(2, "0");
|
|
261
269
|
var four = (n) => String(n).padStart(2, "0");
|
|
262
270
|
function normStr(part) {
|
|
@@ -269,8 +277,7 @@ function fill(inputDate, parts2, locale, genitive = false, offset2 = null) {
|
|
|
269
277
|
const partMap = createPartMap(inputDate, parts2, locale, genitive);
|
|
270
278
|
const d = date(inputDate);
|
|
271
279
|
function value({ partName, partValue, token }) {
|
|
272
|
-
if (partName === "literal")
|
|
273
|
-
return partValue;
|
|
280
|
+
if (partName === "literal") return partValue;
|
|
274
281
|
const value2 = partMap[partName];
|
|
275
282
|
if (partName === "hour" && token === "H") {
|
|
276
283
|
return value2.replace(/^0/, "") || "0";
|
|
@@ -282,6 +289,9 @@ function fill(inputDate, parts2, locale, genitive = false, offset2 = null) {
|
|
|
282
289
|
const p = ap(d.getUTCHours() < 12 ? "am" : "pm", locale);
|
|
283
290
|
return token === "A" ? p.toUpperCase() : p.toLowerCase();
|
|
284
291
|
}
|
|
292
|
+
if (partName === "fractionalSecond") {
|
|
293
|
+
return String(d.getUTCMilliseconds()).padStart(3, "0");
|
|
294
|
+
}
|
|
285
295
|
if (partName === "timeZoneName") {
|
|
286
296
|
return offset2 != null ? offset2 : minsToOffset(-1 * d.getTimezoneOffset(), token);
|
|
287
297
|
}
|
|
@@ -307,8 +317,7 @@ function createPartMap(inputDate, parts2, locale, genitive = false) {
|
|
|
307
317
|
preciseLocale,
|
|
308
318
|
requestedParts.reduce(
|
|
309
319
|
(options, part) => {
|
|
310
|
-
if (part.partName === "literal")
|
|
311
|
-
return options;
|
|
320
|
+
if (part.partName === "literal") return options;
|
|
312
321
|
if (genitive && genitiveTokens.includes(part.token)) {
|
|
313
322
|
genitiveParts.push(part);
|
|
314
323
|
}
|
|
@@ -335,9 +344,7 @@ function createPartMap(inputDate, parts2, locale, genitive = false) {
|
|
|
335
344
|
}).formatToParts(d).map(normStr);
|
|
336
345
|
break;
|
|
337
346
|
}
|
|
338
|
-
const genitiveFormattedPart = formattedParts.find(
|
|
339
|
-
(p) => p.type === part.partName
|
|
340
|
-
);
|
|
347
|
+
const genitiveFormattedPart = formattedParts.find((p) => p.type === part.partName);
|
|
341
348
|
const index = valueParts.findIndex((p) => p.type === part.partName);
|
|
342
349
|
if (genitiveFormattedPart && index > -1) {
|
|
343
350
|
valueParts[index] = genitiveFormattedPart;
|
|
@@ -345,50 +352,48 @@ function createPartMap(inputDate, parts2, locale, genitive = false) {
|
|
|
345
352
|
}
|
|
346
353
|
}
|
|
347
354
|
}
|
|
348
|
-
if (hour12.length)
|
|
349
|
-
|
|
350
|
-
if (hour24.length)
|
|
351
|
-
addValues(hour24);
|
|
355
|
+
if (hour12.length) addValues(hour12, true);
|
|
356
|
+
if (hour24.length) addValues(hour24);
|
|
352
357
|
return valueParts.reduce((map, part) => {
|
|
353
358
|
map[part.type] = part.value;
|
|
354
359
|
return map;
|
|
355
360
|
}, {});
|
|
356
361
|
}
|
|
357
|
-
function
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
);
|
|
362
|
-
const
|
|
363
|
-
const sign = timeDiffInMins < 0 ? "-" : "+";
|
|
362
|
+
function secsToOffset(totalSecs, token = "Z") {
|
|
363
|
+
const sign = totalSecs < 0 ? "-" : "+";
|
|
364
|
+
const absSecs = Math.abs(totalSecs);
|
|
365
|
+
const hours = String(Math.floor(absSecs / 3600)).padStart(2, "0");
|
|
366
|
+
const mins = String(Math.floor(absSecs % 3600 / 60)).padStart(2, "0");
|
|
367
|
+
const secs = Math.round(absSecs % 60);
|
|
364
368
|
if (token === "ZZ") {
|
|
365
|
-
return `${sign}${hours}${mins}`;
|
|
369
|
+
return secs === 0 ? `${sign}${hours}${mins}` : `${sign}${hours}${mins}${String(secs).padStart(2, "0")}`;
|
|
366
370
|
}
|
|
367
|
-
return `${sign}${hours}:${mins}`;
|
|
371
|
+
return secs === 0 ? `${sign}${hours}:${mins}` : `${sign}${hours}:${mins}:${String(secs).padStart(2, "0")}`;
|
|
368
372
|
}
|
|
369
|
-
function
|
|
373
|
+
function minsToOffset(timeDiffInMins, token = "Z") {
|
|
374
|
+
return secsToOffset(timeDiffInMins * 60, token);
|
|
375
|
+
}
|
|
376
|
+
function offsetToSecs(offset2, token) {
|
|
370
377
|
validOffset(offset2, token);
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
);
|
|
374
|
-
|
|
375
|
-
return sign === "+" ? offsetInMins : -offsetInMins;
|
|
378
|
+
const match = offset2.match(/([+-])([0-3][0-9]):?([0-5][0-9])(?::?([0-5][0-9]))?/);
|
|
379
|
+
const [_, sign, hours, mins, secs = "0"] = match;
|
|
380
|
+
const totalSecs = Number(hours) * 3600 + Number(mins) * 60 + Number(secs);
|
|
381
|
+
return sign === "+" ? totalSecs : -totalSecs;
|
|
376
382
|
}
|
|
377
383
|
function validOffset(offset2, token = "Z") {
|
|
378
384
|
const valid = ((token2) => {
|
|
379
385
|
switch (token2) {
|
|
380
386
|
case "Z":
|
|
381
|
-
return /^([+-])[0-3][0-9]:[0-
|
|
387
|
+
return /^([+-])[0-3][0-9]:[0-5][0-9](?::[0-5][0-9])?$/.test(offset2);
|
|
382
388
|
case "ZZ":
|
|
383
|
-
return /^([+-])[0-3][0-9][0-
|
|
389
|
+
return /^([+-])[0-3][0-9][0-5][0-9](?:[0-5][0-9])?$/.test(offset2);
|
|
384
390
|
}
|
|
385
391
|
})(token);
|
|
386
|
-
if (!valid)
|
|
387
|
-
throw new Error(`Invalid offset: ${offset2}`);
|
|
392
|
+
if (!valid) throw new Error(`Invalid offset: ${offset2}`);
|
|
388
393
|
return offset2;
|
|
389
394
|
}
|
|
390
395
|
function escapeTokens(str) {
|
|
391
|
-
return clockAgnostic.concat(clock24).concat(clock12).sort((a, b) => a[0].length > b[0].length ? 1 : -1).reduce((target, part) => {
|
|
396
|
+
return clockAgnostic.concat(clock24).concat(clock12).concat(fractionalSeconds).sort((a, b) => a[0].length > b[0].length ? 1 : -1).reduce((target, part) => {
|
|
392
397
|
return target.replace(part[0], `\\${part[0]}`);
|
|
393
398
|
}, str);
|
|
394
399
|
}
|
|
@@ -402,10 +407,8 @@ function validate(parts2) {
|
|
|
402
407
|
throw new Error(`Numbers in format (${part.partValue}).`);
|
|
403
408
|
}
|
|
404
409
|
if (lastPart && lastPart.partName !== "literal" && part.partName !== "literal") {
|
|
405
|
-
if (!(lastPart.token in fixedLength) && !(part.token in fixedLength) && !(isNumeric(lastPart) && part.token.toLowerCase() === "a")) {
|
|
406
|
-
throw new Error(
|
|
407
|
-
`Illegal adjacent tokens (${lastPart.token}, ${part.token})`
|
|
408
|
-
);
|
|
410
|
+
if (!(lastPart.token in fixedLength) && !(part.token in fixedLength) && !(isNumeric(lastPart) && part.token.toLowerCase() === "a") && lastPart.token !== "SSS") {
|
|
411
|
+
throw new Error(`Illegal adjacent tokens (${lastPart.token}, ${part.token})`);
|
|
409
412
|
}
|
|
410
413
|
}
|
|
411
414
|
lastPart = part;
|
|
@@ -422,8 +425,7 @@ function getOffsetFormat(format2) {
|
|
|
422
425
|
// src/ap.ts
|
|
423
426
|
function ap(ampm, locale) {
|
|
424
427
|
const l = dayPeriodMap.get(locale);
|
|
425
|
-
if (l && l[ampm])
|
|
426
|
-
return l[ampm];
|
|
428
|
+
if (l && l[ampm]) return l[ampm];
|
|
427
429
|
const specimen = new Date(specDate);
|
|
428
430
|
specimen.setUTCHours(ampm === "am" ? 5 : 20);
|
|
429
431
|
const subparts = new Intl.DateTimeFormat(locale, {
|
|
@@ -446,16 +448,10 @@ function ap(ampm, locale) {
|
|
|
446
448
|
// src/applyOffset.ts
|
|
447
449
|
function applyOffset(dateInput, offset2 = "+00:00") {
|
|
448
450
|
const d = date(dateInput);
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
case 6:
|
|
454
|
-
return "Z";
|
|
455
|
-
}
|
|
456
|
-
})();
|
|
457
|
-
const timeDiffInMins = offsetToMins(offset2, token);
|
|
458
|
-
return new Date(d.getTime() + timeDiffInMins * 1e3 * 60);
|
|
451
|
+
const len = fixedLengthByOffset(offset2);
|
|
452
|
+
const token = len === 5 || len === 8 ? "ZZ" : "Z";
|
|
453
|
+
const timeDiffInSecs = offsetToSecs(offset2, token);
|
|
454
|
+
return new Date(d.getTime() + timeDiffInSecs * 1e3);
|
|
459
455
|
}
|
|
460
456
|
|
|
461
457
|
// src/deviceTZ.ts
|
|
@@ -489,10 +485,8 @@ function offset(utcTime, tzA = "UTC", tzB = "device", timeZoneToken = "Z") {
|
|
|
489
485
|
const d = date(utcTime);
|
|
490
486
|
const timeA = relativeTime(d, tzA);
|
|
491
487
|
const timeB = relativeTime(d, tzB);
|
|
492
|
-
const
|
|
493
|
-
|
|
494
|
-
);
|
|
495
|
-
return minsToOffset(timeDiffInMins, timeZoneToken);
|
|
488
|
+
const timeDiffInSecs = Math.round((timeB.getTime() - timeA.getTime()) / 1e3);
|
|
489
|
+
return secsToOffset(timeDiffInSecs, timeZoneToken);
|
|
496
490
|
}
|
|
497
491
|
|
|
498
492
|
// src/tzDate.ts
|
|
@@ -519,7 +513,7 @@ function dayEnd(inputDate) {
|
|
|
519
513
|
// src/dayStart.ts
|
|
520
514
|
function dayStart(inputDate) {
|
|
521
515
|
const d = date(inputDate);
|
|
522
|
-
d.setHours(0, 0, 0);
|
|
516
|
+
d.setHours(0, 0, 0, 0);
|
|
523
517
|
return d;
|
|
524
518
|
}
|
|
525
519
|
|
|
@@ -531,13 +525,11 @@ function parts(format2, locale) {
|
|
|
531
525
|
let f = format2;
|
|
532
526
|
let match = 0;
|
|
533
527
|
const testPattern = (pattern) => {
|
|
534
|
-
if (!pattern[2])
|
|
535
|
-
pattern[2] = new RegExp(`(.)?(${pattern[0]})`, "g");
|
|
528
|
+
if (!pattern[2]) pattern[2] = new RegExp(`(.)?(${pattern[0]})`, "g");
|
|
536
529
|
if (pattern[2].test(f)) {
|
|
537
530
|
let didAdd = 0;
|
|
538
531
|
f = f.replace(pattern[2], (_, prefix, actualMatch) => {
|
|
539
|
-
if (prefix === "\\")
|
|
540
|
-
return actualMatch;
|
|
532
|
+
if (prefix === "\\") return actualMatch;
|
|
541
533
|
return `${typeof prefix === "string" ? prefix : ""}{!${didAdd++ ? match : match++}!}`;
|
|
542
534
|
});
|
|
543
535
|
return !!didAdd;
|
|
@@ -564,7 +556,7 @@ function parts(format2, locale) {
|
|
|
564
556
|
hour12
|
|
565
557
|
};
|
|
566
558
|
}
|
|
567
|
-
const found24Patterns = clockAgnostic.filter(testPattern).concat(clock24.filter(testPattern)).map(createPart.bind(null, false));
|
|
559
|
+
const found24Patterns = clockAgnostic.filter(testPattern).concat(clock24.filter(testPattern)).concat(fractionalSeconds.filter(testPattern)).map(createPart.bind(null, false));
|
|
568
560
|
const parts2 = validate2(
|
|
569
561
|
found24Patterns.concat(
|
|
570
562
|
clock12.filter(testPattern).map(createPart.bind(null, true))
|
|
@@ -593,10 +585,8 @@ function styleParts(format2, locale) {
|
|
|
593
585
|
if (typeof format2 === "string") {
|
|
594
586
|
options.dateStyle = format2;
|
|
595
587
|
} else {
|
|
596
|
-
if ("date" in format2)
|
|
597
|
-
|
|
598
|
-
if ("time" in format2)
|
|
599
|
-
options.timeStyle = format2.time;
|
|
588
|
+
if ("date" in format2) options.dateStyle = format2.date;
|
|
589
|
+
if ("time" in format2) options.timeStyle = format2.time;
|
|
600
590
|
}
|
|
601
591
|
const formatter = new Intl.DateTimeFormat(locale, options);
|
|
602
592
|
const segments = formatter.formatToParts(new Date(specDate)).map(normStr);
|
|
@@ -612,11 +602,9 @@ function styleParts(format2, locale) {
|
|
|
612
602
|
part.type === "hour" ? hourType : void 0,
|
|
613
603
|
options
|
|
614
604
|
);
|
|
615
|
-
if (formatPattern === void 0)
|
|
616
|
-
return;
|
|
605
|
+
if (formatPattern === void 0) return;
|
|
617
606
|
const partValue = formatPattern[1][partName];
|
|
618
|
-
if (!partValue)
|
|
619
|
-
return;
|
|
607
|
+
if (!partValue) return;
|
|
620
608
|
if (!formatPattern[2])
|
|
621
609
|
formatPattern[2] = new RegExp(`${formatPattern[0]}`, "g");
|
|
622
610
|
return {
|
|
@@ -637,8 +625,7 @@ function guessPattern(partName, partValue, locale, hour, options) {
|
|
|
637
625
|
case "year":
|
|
638
626
|
return l === 2 ? tokens.get("YY") : tokens.get("YYYY");
|
|
639
627
|
case "month":
|
|
640
|
-
if (n)
|
|
641
|
-
return l === 1 ? tokens.get("M") : tokens.get("MM");
|
|
628
|
+
if (n) return l === 1 ? tokens.get("M") : tokens.get("MM");
|
|
642
629
|
style = partStyle(locale, partName, partValue);
|
|
643
630
|
switch (style) {
|
|
644
631
|
case "long":
|
|
@@ -659,8 +646,7 @@ function guessPattern(partName, partValue, locale, hour, options) {
|
|
|
659
646
|
return tokens.get("dddd");
|
|
660
647
|
}
|
|
661
648
|
case "hour":
|
|
662
|
-
if (hour === 12)
|
|
663
|
-
return l === 1 ? tokens.get("h") : tokens.get("hh");
|
|
649
|
+
if (hour === 12) return l === 1 ? tokens.get("h") : tokens.get("hh");
|
|
664
650
|
return l === 1 ? tokens.get("H") : tokens.get("HH");
|
|
665
651
|
case "minute":
|
|
666
652
|
return l === 1 ? tokens.get("m") : tokens.get("mm");
|
|
@@ -685,8 +671,7 @@ function partStyle(locale, part, value) {
|
|
|
685
671
|
const formats2 = {};
|
|
686
672
|
for (let i = 0; i < 12; i++) {
|
|
687
673
|
date2.setMonth(0 + i);
|
|
688
|
-
if (i in weekdays)
|
|
689
|
-
date2.setDate(weekdays[i]);
|
|
674
|
+
if (i in weekdays) date2.setDate(weekdays[i]);
|
|
690
675
|
date2.setUTCHours(8 + i);
|
|
691
676
|
for (const style of partStyles) {
|
|
692
677
|
const segments = new Intl.DateTimeFormat(
|
|
@@ -705,12 +690,10 @@ function partStyle(locale, part, value) {
|
|
|
705
690
|
(part2) => part2.type === "month"
|
|
706
691
|
);
|
|
707
692
|
const index = segments.findIndex((part2) => part2.type === "month");
|
|
708
|
-
if (index > -1 && genitiveMonth)
|
|
709
|
-
segments[index] = genitiveMonth;
|
|
693
|
+
if (index > -1 && genitiveMonth) segments[index] = genitiveMonth;
|
|
710
694
|
}
|
|
711
695
|
segments.forEach((part2) => {
|
|
712
|
-
if (part2.type === "literal")
|
|
713
|
-
return;
|
|
696
|
+
if (part2.type === "literal") return;
|
|
714
697
|
const type = part2.type;
|
|
715
698
|
formats2[type] = Object.assign(formats2[type] || {}, {
|
|
716
699
|
[part2.value]: style
|
|
@@ -752,8 +735,7 @@ function format(inputDateOrOptions, format2 = "long", locale = "device", genitiv
|
|
|
752
735
|
tz
|
|
753
736
|
} = inputDateOrOptions);
|
|
754
737
|
}
|
|
755
|
-
if (format2 === "ISO8601")
|
|
756
|
-
return date(inputDateOrOptions).toISOString();
|
|
738
|
+
if (format2 === "ISO8601") return date(inputDateOrOptions).toISOString();
|
|
757
739
|
if (tz) {
|
|
758
740
|
forceOffset = offset(inputDateOrOptions, "utc", tz, getOffsetFormat(format2));
|
|
759
741
|
}
|
|
@@ -769,7 +751,7 @@ function format(inputDateOrOptions, format2 = "long", locale = "device", genitiv
|
|
|
769
751
|
}
|
|
770
752
|
return fill(
|
|
771
753
|
inputDateOrOptions,
|
|
772
|
-
parts(format2, locale).filter(partFilter != null ? partFilter : () => true),
|
|
754
|
+
parts(format2, locale).filter(partFilter != null ? partFilter : (() => true)),
|
|
773
755
|
locale,
|
|
774
756
|
genitive,
|
|
775
757
|
forceOffset
|
|
@@ -803,7 +785,7 @@ function hourEnd(inputDate) {
|
|
|
803
785
|
// src/hourStart.ts
|
|
804
786
|
function hourStart(inputDate) {
|
|
805
787
|
const d = date(inputDate);
|
|
806
|
-
d.setMinutes(0, 0);
|
|
788
|
+
d.setMinutes(0, 0, 0);
|
|
807
789
|
return d;
|
|
808
790
|
}
|
|
809
791
|
|
|
@@ -817,7 +799,7 @@ function minuteEnd(inputDate) {
|
|
|
817
799
|
// src/minuteStart.ts
|
|
818
800
|
function minuteStart(inputDate) {
|
|
819
801
|
const d = date(inputDate);
|
|
820
|
-
d.setSeconds(0);
|
|
802
|
+
d.setSeconds(0, 0);
|
|
821
803
|
return d;
|
|
822
804
|
}
|
|
823
805
|
|
|
@@ -825,7 +807,7 @@ function minuteStart(inputDate) {
|
|
|
825
807
|
function monthStart(inputDate) {
|
|
826
808
|
const d = date(inputDate);
|
|
827
809
|
d.setDate(1);
|
|
828
|
-
d.setHours(0, 0, 0);
|
|
810
|
+
d.setHours(0, 0, 0, 0);
|
|
829
811
|
return d;
|
|
830
812
|
}
|
|
831
813
|
|
|
@@ -861,13 +843,11 @@ function nearestDay(inputDate, search, constraint = 7) {
|
|
|
861
843
|
for (let i = 0; i <= increments || i < decrements; i++) {
|
|
862
844
|
if (i <= increments) {
|
|
863
845
|
const next = addDay(d, i);
|
|
864
|
-
if (search(next))
|
|
865
|
-
return next;
|
|
846
|
+
if (search(next)) return next;
|
|
866
847
|
}
|
|
867
848
|
if (i && i <= decrements) {
|
|
868
849
|
const prev = addDay(d, -i);
|
|
869
|
-
if (search(prev))
|
|
870
|
-
return prev;
|
|
850
|
+
if (search(prev)) return prev;
|
|
871
851
|
}
|
|
872
852
|
}
|
|
873
853
|
return null;
|
|
@@ -876,8 +856,7 @@ function nearestDay(inputDate, search, constraint = 7) {
|
|
|
876
856
|
// src/range.ts
|
|
877
857
|
function range(token, locale = "en", genitive = false) {
|
|
878
858
|
const r = (n, c) => Array(n).fill("").map((_, i) => `${c(i)}`);
|
|
879
|
-
if (token === "M")
|
|
880
|
-
return r(12, (i) => i + 1);
|
|
859
|
+
if (token === "M") return r(12, (i) => i + 1);
|
|
881
860
|
if (token === "MM")
|
|
882
861
|
return r(12, (i) => {
|
|
883
862
|
const m = i + 1;
|
|
@@ -935,19 +914,16 @@ function parse(dateStrOrOptions, format2 = "ISO8601", locale = "device") {
|
|
|
935
914
|
} else {
|
|
936
915
|
dateStr = dateStrOrOptions;
|
|
937
916
|
}
|
|
938
|
-
if (!dateStr)
|
|
939
|
-
throw new Error("parse() requires a date string.");
|
|
917
|
+
if (!dateStr) throw new Error("parse() requires a date string.");
|
|
940
918
|
const invalid = () => {
|
|
941
919
|
throw new Error(
|
|
942
920
|
`Date (${dateStr}) does not match format (${formatStr(format2, locale)})`
|
|
943
921
|
);
|
|
944
922
|
};
|
|
945
|
-
if (format2 === "ISO8601")
|
|
946
|
-
return date(dateStr);
|
|
923
|
+
if (format2 === "ISO8601") return date(dateStr);
|
|
947
924
|
const genitive = styles.includes(format2) || typeof format2 === "object";
|
|
948
925
|
const formatParts = validate(parts(format2, locale).filter(partFilter));
|
|
949
|
-
if (!formatParts.length)
|
|
950
|
-
throw new Error("parse() requires a pattern.");
|
|
926
|
+
if (!formatParts.length) throw new Error("parse() requires a pattern.");
|
|
951
927
|
let parsedParts;
|
|
952
928
|
try {
|
|
953
929
|
parsedParts = parseParts(dateStr, formatParts);
|
|
@@ -961,17 +937,19 @@ function parse(dateStrOrOptions, format2 = "ISO8601", locale = "device") {
|
|
|
961
937
|
["DD", now.getDate()],
|
|
962
938
|
["HH", 0],
|
|
963
939
|
["mm", 0],
|
|
964
|
-
["ss", 0]
|
|
940
|
+
["ss", 0],
|
|
941
|
+
["SSS", 0]
|
|
965
942
|
]);
|
|
966
943
|
let a = null;
|
|
967
944
|
let offset2 = "";
|
|
968
945
|
parsedParts.forEach((part) => {
|
|
969
|
-
if (part.partName === "literal")
|
|
970
|
-
|
|
971
|
-
if (part.token === part.value)
|
|
972
|
-
return invalid();
|
|
946
|
+
if (part.partName === "literal") return;
|
|
947
|
+
if (part.token === part.value) return invalid();
|
|
973
948
|
const v = Number(part.value);
|
|
974
|
-
if (
|
|
949
|
+
if (part.token === "SSS") {
|
|
950
|
+
const digits = part.value.padEnd(3, "0").slice(0, 3);
|
|
951
|
+
parsed.set("SSS", Number(digits));
|
|
952
|
+
} else if (parsed.has(part.token)) {
|
|
975
953
|
parsed.set(part.token, v);
|
|
976
954
|
} else if (part.token === "YY") {
|
|
977
955
|
parsed.set("YYYY", fourDigitYear(part.value));
|
|
@@ -1011,17 +989,24 @@ function parse(dateStrOrOptions, format2 = "ISO8601", locale = "device") {
|
|
|
1011
989
|
parsed.set("HH", 0);
|
|
1012
990
|
}
|
|
1013
991
|
parsed.set("MM", (parsed.get("MM") || 1) - 1);
|
|
1014
|
-
let [Y, M, D, h, m, s] = Array.from(parsed.values());
|
|
992
|
+
let [Y, M, D, h, m, s, ms] = Array.from(parsed.values());
|
|
1015
993
|
const maxDaysInMonth = monthDays(/* @__PURE__ */ new Date(`${four(Y)}-${two(M + 1)}-10`));
|
|
1016
994
|
if (maxDaysInMonth < D && dateOverflow === "throw")
|
|
1017
995
|
throw new Error(`Invalid date ${four(Y)}-${two(M + 1)}-${two(D)}`);
|
|
1018
996
|
D = dateOverflow === "backward" ? Math.min(D, maxDaysInMonth) : D;
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
997
|
+
const msStr = String(ms).padStart(3, "0");
|
|
998
|
+
if (offset2) {
|
|
999
|
+
const isoStringUtc = `${four(Y)}-${two(M + 1)}-${two(D)}T${two(h)}:${two(m)}:${two(s)}.${msStr}Z`;
|
|
1000
|
+
const d2 = new Date(isoStringUtc);
|
|
1001
|
+
if (!isFinite(+d2)) return invalid();
|
|
1002
|
+
const len = fixedLengthByOffset(offset2);
|
|
1003
|
+
const token = len === 5 || len === 8 ? "ZZ" : "Z";
|
|
1004
|
+
const offsetSecs = offsetToSecs(offset2, token);
|
|
1005
|
+
return new Date(d2.getTime() - offsetSecs * 1e3);
|
|
1006
|
+
}
|
|
1007
|
+
const isoString = `${four(Y)}-${two(M + 1)}-${two(D)}T${two(h)}:${two(m)}:${two(s)}.${msStr}`;
|
|
1022
1008
|
const d = new Date(isoString);
|
|
1023
|
-
if (isFinite(+d))
|
|
1024
|
-
return d;
|
|
1009
|
+
if (isFinite(+d)) return d;
|
|
1025
1010
|
return invalid();
|
|
1026
1011
|
}
|
|
1027
1012
|
function parseParts(dateStr, formatParts) {
|
|
@@ -1041,13 +1026,18 @@ function parseParts(dateStr, formatParts) {
|
|
|
1041
1026
|
len = current.partValue.length;
|
|
1042
1027
|
} else if (current.partName === "timeZoneName") {
|
|
1043
1028
|
len = fixedLengthByOffset(dateStr.substring(pos));
|
|
1029
|
+
} else if (current.token === "SSS") {
|
|
1030
|
+
let end = pos;
|
|
1031
|
+
while (end < dateStr.length && /\d/.test(dateStr.charAt(end))) {
|
|
1032
|
+
end++;
|
|
1033
|
+
}
|
|
1034
|
+
len = end - pos;
|
|
1044
1035
|
} else if (current.token in fixedLength) {
|
|
1045
1036
|
len = fixedLength[current.token];
|
|
1046
1037
|
} else if (next) {
|
|
1047
1038
|
if (next.partName === "literal") {
|
|
1048
1039
|
len = dateStr.indexOf(next.partValue, pos) - pos;
|
|
1049
|
-
if (len < 0)
|
|
1050
|
-
throw new Error();
|
|
1040
|
+
if (len < 0) throw new Error();
|
|
1051
1041
|
} else if (next.partName === "dayPeriod") {
|
|
1052
1042
|
for (let i2 = 1; i2 <= 4; i2++) {
|
|
1053
1043
|
if (isNaN(Number(dateStr.charAt(pos + i2)))) {
|
|
@@ -1057,8 +1047,7 @@ function parseParts(dateStr, formatParts) {
|
|
|
1057
1047
|
}
|
|
1058
1048
|
} else {
|
|
1059
1049
|
const nextChar = dateStr.substring(pos).search(/\d/);
|
|
1060
|
-
if (nextChar !== -1)
|
|
1061
|
-
len = pos + nextChar;
|
|
1050
|
+
if (nextChar !== -1) len = pos + nextChar;
|
|
1062
1051
|
}
|
|
1063
1052
|
} else {
|
|
1064
1053
|
len = dateStr.length;
|
|
@@ -1083,6 +1072,13 @@ function sameSecond(inputDateA, inputDateB) {
|
|
|
1083
1072
|
return a.getSeconds() === b.getSeconds();
|
|
1084
1073
|
}
|
|
1085
1074
|
|
|
1075
|
+
// src/sameMillisecond.ts
|
|
1076
|
+
function sameMillisecond(inputDateA, inputDateB) {
|
|
1077
|
+
const a = date(inputDateA);
|
|
1078
|
+
const b = date(inputDateB);
|
|
1079
|
+
return a.getMilliseconds() === b.getMilliseconds();
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1086
1082
|
// src/sameMinute.ts
|
|
1087
1083
|
function sameMinute(inputDateA, inputDateB) {
|
|
1088
1084
|
const a = date(inputDateA);
|
|
@@ -1108,10 +1104,9 @@ function sameYear(inputDateA, inputDateB) {
|
|
|
1108
1104
|
function weekStart(inputDate, startOfWeekDay = 0) {
|
|
1109
1105
|
const d = date(inputDate);
|
|
1110
1106
|
let diff = startOfWeekDay - d.getDay();
|
|
1111
|
-
if (diff > 0)
|
|
1112
|
-
diff = diff - 7;
|
|
1107
|
+
if (diff > 0) diff = diff - 7;
|
|
1113
1108
|
d.setDate(d.getDate() + diff);
|
|
1114
|
-
d.setHours(0, 0, 0);
|
|
1109
|
+
d.setHours(0, 0, 0, 0);
|
|
1115
1110
|
return d;
|
|
1116
1111
|
}
|
|
1117
1112
|
|
|
@@ -1119,24 +1114,22 @@ function weekStart(inputDate, startOfWeekDay = 0) {
|
|
|
1119
1114
|
function weekEnd(inputDate, startOfWeekDay = 0) {
|
|
1120
1115
|
const d = weekStart(inputDate, startOfWeekDay);
|
|
1121
1116
|
d.setDate(d.getDate() + 6);
|
|
1122
|
-
d.setHours(23, 59, 59);
|
|
1117
|
+
d.setHours(23, 59, 59, 999);
|
|
1123
1118
|
return d;
|
|
1124
1119
|
}
|
|
1125
1120
|
|
|
1126
1121
|
// src/yearStart.ts
|
|
1127
1122
|
function yearStart(inputDate) {
|
|
1128
1123
|
const d = date(inputDate);
|
|
1129
|
-
d.setMonth(0);
|
|
1130
|
-
d.
|
|
1131
|
-
d.setHours(0, 0, 0);
|
|
1124
|
+
d.setMonth(0, 1);
|
|
1125
|
+
d.setHours(0, 0, 0, 0);
|
|
1132
1126
|
return d;
|
|
1133
1127
|
}
|
|
1134
1128
|
|
|
1135
1129
|
// src/yearEnd.ts
|
|
1136
1130
|
function yearEnd(inputDate) {
|
|
1137
1131
|
const d = date(inputDate);
|
|
1138
|
-
d.setMonth(11);
|
|
1139
|
-
d.setDate(31);
|
|
1132
|
+
d.setMonth(11, 31);
|
|
1140
1133
|
d.setHours(23, 59, 59, 999);
|
|
1141
1134
|
return d;
|
|
1142
1135
|
}
|
|
@@ -1162,6 +1155,16 @@ function isEqual(dateLeft, dateRight) {
|
|
|
1162
1155
|
return +_dateLeft === +_dateRight;
|
|
1163
1156
|
}
|
|
1164
1157
|
|
|
1158
|
+
// src/isPast.ts
|
|
1159
|
+
function isPast(inputDate) {
|
|
1160
|
+
return isBefore(inputDate);
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
// src/isFuture.ts
|
|
1164
|
+
function isFuture(inputDate) {
|
|
1165
|
+
return isAfter(inputDate);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1165
1168
|
// src/diffMilliseconds.ts
|
|
1166
1169
|
function diffMilliseconds(dateA, dateB) {
|
|
1167
1170
|
const left = date(dateA);
|
|
@@ -1177,17 +1180,26 @@ function diffRound(value, method = "trunc") {
|
|
|
1177
1180
|
|
|
1178
1181
|
// src/diffSeconds.ts
|
|
1179
1182
|
function diffSeconds(dateA, dateB, roundingMethod) {
|
|
1180
|
-
return diffRound(
|
|
1183
|
+
return diffRound(
|
|
1184
|
+
// @ts-ignore
|
|
1185
|
+
diffMilliseconds(dateA, dateB) / 1e3,
|
|
1186
|
+
roundingMethod
|
|
1187
|
+
);
|
|
1181
1188
|
}
|
|
1182
1189
|
|
|
1183
1190
|
// src/diffMinutes.ts
|
|
1184
1191
|
function diffMinutes(dateA, dateB, roundingMethod) {
|
|
1185
|
-
return diffRound(
|
|
1192
|
+
return diffRound(
|
|
1193
|
+
//@ts-ignore
|
|
1194
|
+
diffMilliseconds(dateA, dateB) / 6e4,
|
|
1195
|
+
roundingMethod
|
|
1196
|
+
);
|
|
1186
1197
|
}
|
|
1187
1198
|
|
|
1188
1199
|
// src/diffHours.ts
|
|
1189
1200
|
function diffHours(dateA, dateB, roundingMethod) {
|
|
1190
1201
|
return diffRound(
|
|
1202
|
+
//@ts-ignore
|
|
1191
1203
|
diffMilliseconds(dateA, dateB) / 36e5,
|
|
1192
1204
|
// 1000 * 60 * 60
|
|
1193
1205
|
roundingMethod
|
|
@@ -1197,6 +1209,7 @@ function diffHours(dateA, dateB, roundingMethod) {
|
|
|
1197
1209
|
// src/diffDays.ts
|
|
1198
1210
|
function diffDays(dateA, dateB, roundingMethod) {
|
|
1199
1211
|
return diffRound(
|
|
1212
|
+
// @ts-ignore
|
|
1200
1213
|
diffMilliseconds(dateA, dateB) / 864e5,
|
|
1201
1214
|
// hour * 24
|
|
1202
1215
|
roundingMethod
|
|
@@ -1234,13 +1247,17 @@ function diffMonths(dateA, dateB) {
|
|
|
1234
1247
|
|
|
1235
1248
|
// src/diffYears.ts
|
|
1236
1249
|
function diffYears(dateA, dateB) {
|
|
1237
|
-
const r = Math.trunc(
|
|
1250
|
+
const r = Math.trunc(
|
|
1251
|
+
//@ts-ignore
|
|
1252
|
+
diffMonths(dateA, dateB) / 12
|
|
1253
|
+
);
|
|
1238
1254
|
return r == 0 ? 0 : r;
|
|
1239
1255
|
}
|
|
1240
1256
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1241
1257
|
0 && (module.exports = {
|
|
1242
1258
|
addDay,
|
|
1243
1259
|
addHour,
|
|
1260
|
+
addMillisecond,
|
|
1244
1261
|
addMinute,
|
|
1245
1262
|
addMonth,
|
|
1246
1263
|
addSecond,
|
|
@@ -1267,6 +1284,8 @@ function diffYears(dateA, dateB) {
|
|
|
1267
1284
|
isAfter,
|
|
1268
1285
|
isBefore,
|
|
1269
1286
|
isEqual,
|
|
1287
|
+
isFuture,
|
|
1288
|
+
isPast,
|
|
1270
1289
|
iso8601,
|
|
1271
1290
|
minuteEnd,
|
|
1272
1291
|
minuteStart,
|
|
@@ -1282,6 +1301,7 @@ function diffYears(dateA, dateB) {
|
|
|
1282
1301
|
removeOffset,
|
|
1283
1302
|
sameDay,
|
|
1284
1303
|
sameHour,
|
|
1304
|
+
sameMillisecond,
|
|
1285
1305
|
sameMinute,
|
|
1286
1306
|
sameSecond,
|
|
1287
1307
|
sameYear,
|