UNPKG

1.58 kBJavaScriptView Raw
1function isValidDatetime(datetime) {
2 return 'Invalid Date' !== `${new Date(datetime)}`;
3}
4function isNotANumber(value) {
5 return value != null && isNaN(+value);
6}
7export function utcTimeSync({ startDatetime, offset, } = {}) {
8 const isNullishDatetime = null == startDatetime;
9 if (!isNullishDatetime && !isValidDatetime(startDatetime)) {
10 throw new TypeError(`Expected 'startDatetime' to be a valid datetime, but received '${startDatetime}'`);
11 }
12 const { hour = 0, minute = 0, second = 0, millisecond = 0, } = offset || {};
13 if (isNotANumber(hour)) {
14 throw new TypeError(`Expected 'offset.hour' to be a number, but received '${hour}'`);
15 }
16 if (isNotANumber(minute)) {
17 throw new TypeError(`Expected 'offset.minute' to be a number, but received '${minute}'`);
18 }
19 if (isNotANumber(second)) {
20 throw new TypeError(`Expected 'offset.second' to be a number, but received '${second}'`);
21 }
22 if (isNotANumber(millisecond)) {
23 throw new TypeError(`Expected 'offset.millisecond' to be a number, but received '${millisecond}'`);
24 }
25 const newDatetime = isNullishDatetime
26 ? new Date()
27 : new Date(startDatetime);
28 return new Date(Date.UTC(newDatetime.getUTCFullYear(), newDatetime.getUTCMonth(), newDatetime.getUTCDate(), newDatetime.getUTCHours() + hour, newDatetime.getUTCMinutes() + minute, newDatetime.getUTCSeconds() + second, newDatetime.getUTCMilliseconds() + millisecond));
29}
30export async function utcTime(opts) {
31 return utcTimeSync(opts);
32}
33//# sourceMappingURL=index.js.map
\No newline at end of file