12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { constructFrom } from "../../../constructFrom.js";
- import { getTimezoneOffsetInMilliseconds } from "../../../_lib/getTimezoneOffsetInMilliseconds.js";
- import { timezonePatterns } from "../constants.js";
- import { Parser } from "../Parser.js";
- import { parseTimezonePattern } from "../utils.js";
- // 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"];
- }
|