33 lines
914 B
TypeScript
33 lines
914 B
TypeScript
import { format, addHours } from "date-fns";
|
|
import { TZDate } from "@date-fns/tz";
|
|
import { UTCDate, utc } from "@date-fns/utc";
|
|
|
|
export function dateFromInput(input: { dateQuery: string, timezone: string }) {
|
|
let t: string;
|
|
if (input.dateQuery == "today") {
|
|
t = new Date();
|
|
return format(t, "yyyy-MM-dd", { in: input.timezone });
|
|
}
|
|
else {
|
|
t = new UTCDate(input.dateQuery);
|
|
return format(t, "yyyy-MM-dd", { in: utc });
|
|
}
|
|
|
|
}
|
|
|
|
function generateHour(d, t) {
|
|
const dt: TZDate = addHours(d, t);
|
|
return {
|
|
date: format(dt, 'yyyy-MM-dd'),
|
|
time: parseInt(format(dt, 'H')),
|
|
};
|
|
}
|
|
|
|
export function hoursListInTimezone(input: { dateQuery: string, timezone: string }) {
|
|
const dateStr = dateFromInput(input);
|
|
const d = new TZDate(dateStr, input.timezone);
|
|
return Array.from({ length: 24 }, (_, t) =>
|
|
generateHour(d, t)
|
|
);
|
|
}
|