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. +00:00 is `'Z'`) export class ISOTimezoneWithZParser 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"]; }