mirror of
https://github.com/lukevella/rallly.git
synced 2025-06-20 11:27:13 +02:00
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import dayjs from "dayjs";
|
|
import localizedFormat from "dayjs/plugin/localizedFormat";
|
|
import timezone from "dayjs/plugin/timezone";
|
|
import spacetime from "spacetime";
|
|
import soft from "timezone-soft";
|
|
|
|
dayjs.extend(localizedFormat);
|
|
dayjs.extend(timezone);
|
|
|
|
export const getTimeZoneAbbreviation = (date: Date, timeZone: string) => {
|
|
const timeZoneDisplayFormat = soft(timeZone)[0];
|
|
const spaceTimeDate = spacetime(date, timeZone);
|
|
const standardAbbrev = timeZoneDisplayFormat.standard.abbr;
|
|
const dstAbbrev = timeZoneDisplayFormat.daylight?.abbr;
|
|
const abbrev = spaceTimeDate.isDST() ? dstAbbrev : standardAbbrev;
|
|
return abbrev;
|
|
};
|
|
|
|
export const printDate = (date: Date, duration: number, timeZone?: string) => {
|
|
if (duration === 0) {
|
|
return dayjs(date).format("LL");
|
|
} else if (timeZone) {
|
|
return `${dayjs(date).tz(timeZone).format("LLL")} - ${dayjs(date)
|
|
.add(duration, "minutes")
|
|
.tz(timeZone)
|
|
.format("LT")} ${getTimeZoneAbbreviation(date, timeZone)}`;
|
|
} else {
|
|
return `${dayjs(date).utc().format("LLL")} - ${dayjs(date)
|
|
.utc()
|
|
.add(duration, "minutes")
|
|
.format("LT")}`;
|
|
}
|
|
};
|