Skip to content

Commit

Permalink
fix: remove usage of long offset
Browse files Browse the repository at this point in the history
  • Loading branch information
dextertanyj committed Aug 18, 2024
1 parent 3274557 commit 59e5c94
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,20 @@ import {
SECONDS_TO_MILLISECONDS,
} from "./constants.js";

export { Day } from "./constants.js";

export class LocalDate {
private offset: number;

constructor(
private timezone: string,
reference: Date | number | undefined = undefined,
) {
const timezoneOffsetString = Intl.DateTimeFormat("en-US", {
timeZone: timezone,
timeZoneName: "longOffset",
})
.formatToParts(reference ?? 0)
.find((part) => part.type === "timeZoneName");
const timezoneOffset = {
hour: 0,
minute: 0,
};

if (timezoneOffsetString) {
const offset = timezoneOffsetString.value.slice(3); // Remove GMT
const [hour, minute] = offset.split(":");
if (hour) timezoneOffset.hour = parseInt(hour, 10);
if (minute) timezoneOffset.minute = parseInt(minute, 10);
}
const referenceDate = reference ? new Date(reference) : new Date(0);
const utcOffset = new Date(referenceDate.toLocaleString("en-US", { timeZone: "utc" }));
const timezoneOffset = new Date(referenceDate.toLocaleString("en-US", { timeZone: timezone }));

this.offset = timezoneOffset.hour * 60 * 60 * 1000 + timezoneOffset.minute * 60 * 1000;
this.offset = timezoneOffset.valueOf() - utcOffset.valueOf();
}

private toNormalizedTimestamp(date: Date | number): number {
Expand Down

0 comments on commit 59e5c94

Please sign in to comment.