Files
TheGame/packages/web/utils/dateHelpers.ts
Alec LaLonde 44c706761c Feature/add timezone frontend (#231)
* Added tz column

* Updated hasura permissions on new table

* Added new dependencies for working with timezones

* Added SetupTimeZone component

* Bumped spacetime-informal to use their types

* Extracted timezone computation into helper, added useMemo hook

* Re-added spacetime types
2020-12-24 23:28:12 -07:00

36 lines
953 B
TypeScript

import { PlayerFragmentFragment } from "graphql/autogen/types";
import spacetime from 'spacetime';
import { display } from 'spacetime-informal';
export interface TimeZoneDisplay {
timeZone?: string;
offset?: string;
}
export const getPlayerTimeZoneDisplay = (player: PlayerFragmentFragment): TimeZoneDisplay => {
let tzLabel;
let offsetLabel;
if (player?.tz) {
const timeZone = spacetime.now().goto(player.tz)
const tzDisplay = display(player.tz)
if (tzDisplay && tzDisplay.daylight && tzDisplay.standard) {
tzLabel = timeZone.isDST()
? tzDisplay.daylight.abbrev
: tzDisplay.standard.abbrev;
const {offset} = timeZone.timezone().current;
if (offset > 0) {
offsetLabel = `(GMT +${offset})`;
} else if (offset < 0) {
offsetLabel = `(GMT ${offset})`;
}
} else {
tzLabel = player.tz;
}
}
return {
timeZone: tzLabel,
offset: offsetLabel
}
}