@giveback007/util-lib 2.2.0 → 2.3.2
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/number.d.ts +2 -0
- package/dist/number.js +3 -1
- package/dist/number.js.map +1 -1
- package/dist/time.d.ts +126 -3
- package/dist/time.js +36 -7
- package/dist/time.js.map +1 -1
- package/package.json +1 -1
- package/src/number.ts +5 -1
- package/src/time.ts +38 -8
package/dist/number.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { num } from '.';
|
|
1
2
|
/**
|
|
2
3
|
* Returns a random whole number between `min` and `max`,
|
|
3
4
|
* `min` and `max` are inclusive.
|
|
@@ -24,3 +25,4 @@ export declare const numFixed: (n: number, fractionDigits: number) => number;
|
|
|
24
25
|
* new random number.
|
|
25
26
|
*/
|
|
26
27
|
export declare function newNum(prevNum: number | number[], min: number, max: number): number;
|
|
28
|
+
export declare const getProgress: (total: num, nOfDone: num, fractionDigits?: number) => string;
|
package/dist/number.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.numFixed = exports.average = exports.rand = exports.randInt = void 0;
|
|
3
|
+
exports.getProgress = exports.numFixed = exports.average = exports.rand = exports.randInt = void 0;
|
|
4
4
|
exports.newNum = newNum;
|
|
5
5
|
const _1 = require(".");
|
|
6
6
|
/**
|
|
@@ -47,4 +47,6 @@ function newNum(prevNum, min, max) {
|
|
|
47
47
|
} while (dict[num]);
|
|
48
48
|
return num;
|
|
49
49
|
}
|
|
50
|
+
const getProgress = (total, nOfDone, fractionDigits = 2) => (nOfDone / total * 100).toFixed(fractionDigits);
|
|
51
|
+
exports.getProgress = getProgress;
|
|
50
52
|
//# sourceMappingURL=number.js.map
|
package/dist/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AAmCA,wBAmBC;AAtDD,
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":";;;AAmCA,wBAmBC;AAtDD,wBAAqD;AAErD;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAD3C,QAAA,OAAO,WACoC;AAEjD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AADzB,QAAA,IAAI,QACqB;AAEtC,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAD7C,QAAA,OAAO,WACsC;AAE1D;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,cAAsB,EAAE,EAAE,CAC1D,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAD7B,QAAA,QAAQ,YACqB;AAE1C;;;GAGG;AACH,SAAgB,MAAM,CAClB,OAA0B,EAAE,GAAW,EAAE,GAAW;IAEpD,IAAI,GAAG,CAAC;IACR,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAkB,IAAA,SAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,GAAG,CAAC;QACA,GAAG,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC;QAEP,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC;AAEM,MAAM,WAAW,GAAG,CACvB,KAAU,EAAE,OAAY,EAAE,cAAc,GAAG,CAAC,EAC9C,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAFxC,QAAA,WAAW,eAE6B"}
|
package/dist/time.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export declare const wait: (ms: number) => Promise<void>;
|
|
|
5
5
|
/** Resolves after a given msEpoch passes. `msEpoch - Date.now()` */
|
|
6
6
|
export declare const waitUntil: (msEpoch: number) => Promise<void>;
|
|
7
7
|
export declare const msTime: MsTime;
|
|
8
|
-
export declare const weekTuple: readonly ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
9
8
|
/**
|
|
10
9
|
* Converts Date to time of day.
|
|
11
10
|
* Good for use in logging.
|
|
@@ -56,7 +55,7 @@ export declare const time: {
|
|
|
56
55
|
};
|
|
57
56
|
export declare const humanizedTime: (date: AnyDate) => string | null;
|
|
58
57
|
/** A Date substitute, to make working with time easier and more versatile */
|
|
59
|
-
export declare function getTime(t?: TimeArr | num | str,
|
|
58
|
+
export declare function getTime(t?: Temporal.ZonedDateTime | TimeArr | num | str | 'now',
|
|
60
59
|
/** For a list of available timeZone values run:
|
|
61
60
|
* `Intl.supportedValuesOf('timeZone');` */
|
|
62
61
|
timeZone?: str): {
|
|
@@ -64,10 +63,134 @@ timeZone?: str): {
|
|
|
64
63
|
date: Date;
|
|
65
64
|
tzOffsetMin: number;
|
|
66
65
|
localISO: string;
|
|
67
|
-
|
|
66
|
+
obj: TimeObj;
|
|
68
67
|
isoStr: string;
|
|
69
68
|
timeZone: string;
|
|
70
69
|
epochMs: number;
|
|
70
|
+
startOf: {
|
|
71
|
+
day: () => {
|
|
72
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
73
|
+
date: Date;
|
|
74
|
+
tzOffsetMin: number;
|
|
75
|
+
localISO: string;
|
|
76
|
+
obj: TimeObj;
|
|
77
|
+
isoStr: string;
|
|
78
|
+
timeZone: string;
|
|
79
|
+
epochMs: number;
|
|
80
|
+
startOf: {
|
|
81
|
+
day: /*elided*/ any;
|
|
82
|
+
month: () => /*elided*/ any;
|
|
83
|
+
year: () => /*elided*/ any;
|
|
84
|
+
};
|
|
85
|
+
endOf: {
|
|
86
|
+
day: () => /*elided*/ any;
|
|
87
|
+
month: () => /*elided*/ any;
|
|
88
|
+
year: () => /*elided*/ any;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
month: () => {
|
|
92
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
93
|
+
date: Date;
|
|
94
|
+
tzOffsetMin: number;
|
|
95
|
+
localISO: string;
|
|
96
|
+
obj: TimeObj;
|
|
97
|
+
isoStr: string;
|
|
98
|
+
timeZone: string;
|
|
99
|
+
epochMs: number;
|
|
100
|
+
startOf: {
|
|
101
|
+
day: () => /*elided*/ any;
|
|
102
|
+
month: /*elided*/ any;
|
|
103
|
+
year: () => /*elided*/ any;
|
|
104
|
+
};
|
|
105
|
+
endOf: {
|
|
106
|
+
day: () => /*elided*/ any;
|
|
107
|
+
month: () => /*elided*/ any;
|
|
108
|
+
year: () => /*elided*/ any;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
year: () => {
|
|
112
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
113
|
+
date: Date;
|
|
114
|
+
tzOffsetMin: number;
|
|
115
|
+
localISO: string;
|
|
116
|
+
obj: TimeObj;
|
|
117
|
+
isoStr: string;
|
|
118
|
+
timeZone: string;
|
|
119
|
+
epochMs: number;
|
|
120
|
+
startOf: {
|
|
121
|
+
day: () => /*elided*/ any;
|
|
122
|
+
month: () => /*elided*/ any;
|
|
123
|
+
year: /*elided*/ any;
|
|
124
|
+
};
|
|
125
|
+
endOf: {
|
|
126
|
+
day: () => /*elided*/ any;
|
|
127
|
+
month: () => /*elided*/ any;
|
|
128
|
+
year: () => /*elided*/ any;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
endOf: {
|
|
133
|
+
day: () => {
|
|
134
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
135
|
+
date: Date;
|
|
136
|
+
tzOffsetMin: number;
|
|
137
|
+
localISO: string;
|
|
138
|
+
obj: TimeObj;
|
|
139
|
+
isoStr: string;
|
|
140
|
+
timeZone: string;
|
|
141
|
+
epochMs: number;
|
|
142
|
+
startOf: {
|
|
143
|
+
day: () => /*elided*/ any;
|
|
144
|
+
month: () => /*elided*/ any;
|
|
145
|
+
year: () => /*elided*/ any;
|
|
146
|
+
};
|
|
147
|
+
endOf: {
|
|
148
|
+
day: /*elided*/ any;
|
|
149
|
+
month: () => /*elided*/ any;
|
|
150
|
+
year: () => /*elided*/ any;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
month: () => {
|
|
154
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
155
|
+
date: Date;
|
|
156
|
+
tzOffsetMin: number;
|
|
157
|
+
localISO: string;
|
|
158
|
+
obj: TimeObj;
|
|
159
|
+
isoStr: string;
|
|
160
|
+
timeZone: string;
|
|
161
|
+
epochMs: number;
|
|
162
|
+
startOf: {
|
|
163
|
+
day: () => /*elided*/ any;
|
|
164
|
+
month: () => /*elided*/ any;
|
|
165
|
+
year: () => /*elided*/ any;
|
|
166
|
+
};
|
|
167
|
+
endOf: {
|
|
168
|
+
day: () => /*elided*/ any;
|
|
169
|
+
month: /*elided*/ any;
|
|
170
|
+
year: () => /*elided*/ any;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
year: () => {
|
|
174
|
+
zonedTemporal: Temporal.ZonedDateTime;
|
|
175
|
+
date: Date;
|
|
176
|
+
tzOffsetMin: number;
|
|
177
|
+
localISO: string;
|
|
178
|
+
obj: TimeObj;
|
|
179
|
+
isoStr: string;
|
|
180
|
+
timeZone: string;
|
|
181
|
+
epochMs: number;
|
|
182
|
+
startOf: {
|
|
183
|
+
day: () => /*elided*/ any;
|
|
184
|
+
month: () => /*elided*/ any;
|
|
185
|
+
year: () => /*elided*/ any;
|
|
186
|
+
};
|
|
187
|
+
endOf: {
|
|
188
|
+
day: () => /*elided*/ any;
|
|
189
|
+
month: () => /*elided*/ any;
|
|
190
|
+
year: /*elided*/ any;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
71
194
|
};
|
|
72
195
|
export declare const timeObj: (dt: Date | Temporal.ZonedDateTime) => TimeObj;
|
|
73
196
|
export declare function parseDate(d: AnyDate): Date | null;
|
package/dist/time.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.timeObj = exports.humanizedTime = exports.time = exports.
|
|
3
|
+
exports.timeObj = exports.humanizedTime = exports.time = exports.msTime = exports.waitUntil = exports.wait = void 0;
|
|
4
4
|
exports.dateTimeToString = dateTimeToString;
|
|
5
5
|
exports.getTime = getTime;
|
|
6
6
|
exports.parseDate = parseDate;
|
|
@@ -19,7 +19,6 @@ exports.msTime = {
|
|
|
19
19
|
d: 86400000,
|
|
20
20
|
w: 604800000,
|
|
21
21
|
};
|
|
22
|
-
exports.weekTuple = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
23
22
|
/**
|
|
24
23
|
* Converts Date to time of day.
|
|
25
24
|
* Good for use in logging.
|
|
@@ -107,9 +106,11 @@ function getTime(t,
|
|
|
107
106
|
/** For a list of available timeZone values run:
|
|
108
107
|
* `Intl.supportedValuesOf('timeZone');` */
|
|
109
108
|
timeZone) {
|
|
110
|
-
if (t === undefined)
|
|
109
|
+
if (t === undefined || t === 'now')
|
|
111
110
|
t = Date.now();
|
|
112
|
-
|
|
111
|
+
if (!timeZone)
|
|
112
|
+
timeZone = t instanceof polyfill_1.Temporal.ZonedDateTime ?
|
|
113
|
+
t.timeZoneId : Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
113
114
|
let zonedTemporal;
|
|
114
115
|
let date;
|
|
115
116
|
let isoStr;
|
|
@@ -121,6 +122,9 @@ timeZone) {
|
|
|
121
122
|
else if ((0, _1.isType)(t, 'string')) {
|
|
122
123
|
zonedTemporal = polyfill_1.Temporal.ZonedDateTime.from(t + `[${timeZone}]`);
|
|
123
124
|
}
|
|
125
|
+
else if (t instanceof polyfill_1.Temporal.ZonedDateTime) {
|
|
126
|
+
zonedTemporal = t.withTimeZone(timeZone);
|
|
127
|
+
}
|
|
124
128
|
else {
|
|
125
129
|
zonedTemporal = polyfill_1.Temporal.ZonedDateTime.from({
|
|
126
130
|
year: t[0],
|
|
@@ -139,10 +143,35 @@ timeZone) {
|
|
|
139
143
|
date,
|
|
140
144
|
tzOffsetMin: zonedTemporal.offsetNanoseconds / 60_000_000_000,
|
|
141
145
|
localISO: zonedTemporal.toJSON(),
|
|
142
|
-
|
|
146
|
+
obj: (0, exports.timeObj)(zonedTemporal),
|
|
143
147
|
isoStr: isoStr || date.toISOString(),
|
|
144
148
|
timeZone: timeZone,
|
|
145
149
|
epochMs: zonedTemporal.epochMilliseconds,
|
|
150
|
+
startOf: {
|
|
151
|
+
day: () => getTime(zonedTemporal.startOfDay(), timeZone),
|
|
152
|
+
month: () => {
|
|
153
|
+
const zT = zonedTemporal;
|
|
154
|
+
return getTime([zT.year, zT.month, 1, 0, 0, 0, 0], timeZone);
|
|
155
|
+
},
|
|
156
|
+
year: () => {
|
|
157
|
+
const zT = zonedTemporal;
|
|
158
|
+
return getTime([zT.year, 1, 1, 0, 0, 0, 0], timeZone);
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
endOf: {
|
|
162
|
+
day: () => {
|
|
163
|
+
const zT = zonedTemporal;
|
|
164
|
+
return getTime([zT.year, zT.month, zT.day, 23, 59, 59, 999], timeZone);
|
|
165
|
+
},
|
|
166
|
+
month: () => {
|
|
167
|
+
const zT = zonedTemporal;
|
|
168
|
+
return getTime([zT.year, zT.month, zT.daysInMonth, 23, 59, 59, 999], timeZone);
|
|
169
|
+
},
|
|
170
|
+
year: () => {
|
|
171
|
+
const zT = zonedTemporal;
|
|
172
|
+
return getTime([zT.year, 12, 31, 23, 59, 59, 999], timeZone);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
146
175
|
};
|
|
147
176
|
}
|
|
148
177
|
const timeObj = (dt) => dt instanceof Date ? ({
|
|
@@ -153,7 +182,7 @@ const timeObj = (dt) => dt instanceof Date ? ({
|
|
|
153
182
|
min: dt.getMinutes(),
|
|
154
183
|
sec: dt.getSeconds(),
|
|
155
184
|
ms: dt.getMilliseconds(),
|
|
156
|
-
wDay:
|
|
185
|
+
wDay: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][dt.getDay()]
|
|
157
186
|
}) : ({
|
|
158
187
|
y: dt.year,
|
|
159
188
|
m: dt.month,
|
|
@@ -162,7 +191,7 @@ const timeObj = (dt) => dt instanceof Date ? ({
|
|
|
162
191
|
min: dt.minute,
|
|
163
192
|
sec: dt.second,
|
|
164
193
|
ms: dt.millisecond,
|
|
165
|
-
wDay:
|
|
194
|
+
wDay: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][dt.dayOfWeek - 1]
|
|
166
195
|
});
|
|
167
196
|
exports.timeObj = timeObj;
|
|
168
197
|
function parseDate(d) {
|
package/dist/time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/number.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { arrToBoolDict, Dict, isType } from '.';
|
|
1
|
+
import { arrToBoolDict, Dict, isType, num } from '.';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Returns a random whole number between `min` and `max`,
|
|
@@ -53,3 +53,7 @@ export function newNum(
|
|
|
53
53
|
|
|
54
54
|
return num;
|
|
55
55
|
}
|
|
56
|
+
|
|
57
|
+
export const getProgress = (
|
|
58
|
+
total: num, nOfDone: num, fractionDigits = 2
|
|
59
|
+
) => (nOfDone / total * 100).toFixed(fractionDigits);
|
package/src/time.ts
CHANGED
|
@@ -17,8 +17,6 @@ export const msTime: MsTime = {
|
|
|
17
17
|
w: 604800000,
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export const weekTuple = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const;
|
|
21
|
-
|
|
22
20
|
/**
|
|
23
21
|
* Converts Date to time of day.
|
|
24
22
|
* Good for use in logging.
|
|
@@ -108,13 +106,14 @@ export const humanizedTime = (date: AnyDate) => {
|
|
|
108
106
|
|
|
109
107
|
/** A Date substitute, to make working with time easier and more versatile */
|
|
110
108
|
export function getTime(
|
|
111
|
-
t?: TimeArr | num | str,
|
|
109
|
+
t?: Temporal.ZonedDateTime | TimeArr | num | str | 'now',
|
|
112
110
|
/** For a list of available timeZone values run:
|
|
113
111
|
* `Intl.supportedValuesOf('timeZone');` */
|
|
114
112
|
timeZone?: str
|
|
115
113
|
) {
|
|
116
|
-
if (t === undefined) t = Date.now();
|
|
117
|
-
timeZone =
|
|
114
|
+
if (t === undefined || t === 'now') t = Date.now();
|
|
115
|
+
if (!timeZone) timeZone = t instanceof Temporal.ZonedDateTime ?
|
|
116
|
+
t.timeZoneId : Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
118
117
|
|
|
119
118
|
let zonedTemporal: Temporal.ZonedDateTime;
|
|
120
119
|
let date: Date;
|
|
@@ -126,6 +125,8 @@ export function getTime(
|
|
|
126
125
|
zonedTemporal = Temporal.ZonedDateTime.from(isoStr + `[${timeZone}]`);
|
|
127
126
|
} else if (isType(t, 'string')) {
|
|
128
127
|
zonedTemporal = Temporal.ZonedDateTime.from(t + `[${timeZone}]`)
|
|
128
|
+
} else if (t instanceof Temporal.ZonedDateTime) {
|
|
129
|
+
zonedTemporal = t.withTimeZone(timeZone)
|
|
129
130
|
} else {
|
|
130
131
|
zonedTemporal = Temporal.ZonedDateTime.from({
|
|
131
132
|
year: t[0],
|
|
@@ -146,10 +147,39 @@ export function getTime(
|
|
|
146
147
|
date,
|
|
147
148
|
tzOffsetMin: zonedTemporal.offsetNanoseconds / 60_000_000_000,
|
|
148
149
|
localISO: zonedTemporal.toJSON(),
|
|
149
|
-
|
|
150
|
+
obj: timeObj(zonedTemporal),
|
|
150
151
|
isoStr: isoStr! || date.toISOString(),
|
|
151
152
|
timeZone: timeZone,
|
|
152
153
|
epochMs: zonedTemporal.epochMilliseconds,
|
|
154
|
+
startOf: {
|
|
155
|
+
day: () => getTime(zonedTemporal.startOfDay(), timeZone),
|
|
156
|
+
|
|
157
|
+
month: () => {
|
|
158
|
+
const zT = zonedTemporal;
|
|
159
|
+
return getTime([zT.year, zT.month, 1, 0, 0, 0, 0], timeZone)
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
year: () => {
|
|
163
|
+
const zT = zonedTemporal;
|
|
164
|
+
return getTime([zT.year, 1, 1, 0, 0, 0, 0], timeZone)
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
endOf: {
|
|
168
|
+
day: () => {
|
|
169
|
+
const zT = zonedTemporal;
|
|
170
|
+
return getTime([zT.year, zT.month, zT.day, 23, 59, 59, 999], timeZone)
|
|
171
|
+
},
|
|
172
|
+
|
|
173
|
+
month: () => {
|
|
174
|
+
const zT = zonedTemporal;
|
|
175
|
+
return getTime([zT.year, zT.month, zT.daysInMonth, 23, 59, 59, 999], timeZone)
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
year: () => {
|
|
179
|
+
const zT = zonedTemporal;
|
|
180
|
+
return getTime([zT.year, 12, 31, 23, 59, 59, 999], timeZone)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
153
183
|
}
|
|
154
184
|
}
|
|
155
185
|
|
|
@@ -161,7 +191,7 @@ export const timeObj = (dt: Date | Temporal.ZonedDateTime): TimeObj => dt instan
|
|
|
161
191
|
min: dt.getMinutes(),
|
|
162
192
|
sec: dt.getSeconds(),
|
|
163
193
|
ms: dt.getMilliseconds(),
|
|
164
|
-
wDay:
|
|
194
|
+
wDay: (['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const)[dt.getDay()]!
|
|
165
195
|
}) : ({
|
|
166
196
|
y: dt.year,
|
|
167
197
|
m: dt.month,
|
|
@@ -170,7 +200,7 @@ export const timeObj = (dt: Date | Temporal.ZonedDateTime): TimeObj => dt instan
|
|
|
170
200
|
min: dt.minute,
|
|
171
201
|
sec: dt.second,
|
|
172
202
|
ms: dt.millisecond,
|
|
173
|
-
wDay:
|
|
203
|
+
wDay: (['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] as const)[dt.dayOfWeek - 1]!
|
|
174
204
|
});
|
|
175
205
|
|
|
176
206
|
export function parseDate(d: AnyDate) {
|