import { constructFrom } from "../../../constructFrom.mjs"; import { getTimezoneOffsetInMilliseconds } from "../../../_lib/getTimezoneOffsetInMilliseconds.mjs"; import { timezonePatterns } from "../constants.mjs"; import { Parser } from "../Parser.mjs"; import { parseTimezonePattern } from "../utils.mjs"; // Timezone (ISO-8601) export class ISOTimezoneParser extends Parser { priority = 10; parse(dateString, token) { switch (token) { case "x": return parseTimezonePattern( timezonePatterns.basicOptionalMinutes, dateString, ); case "xx": return parseTimezonePattern(timezonePatterns.basic, dateString); case "xxxx": return parseTimezonePattern( timezonePatterns.basicOptionalSeconds, dateString, ); case "xxxxx": return parseTimezonePattern( timezonePatterns.extendedOptionalSeconds, dateString, ); case "xxx": default: return parseTimezonePattern(timezonePatterns.extended, dateString); } } set(date, flags, value) { if (flags.timestampIsSet) return date; return constructFrom( date, date.getTime() - getTimezoneOffsetInMilliseconds(date) - value, ); } incompatibleTokens = ["t", "T", "X"]; }