date-fns
Version:
Modern JavaScript date utility library
47 lines (41 loc) • 1.32 kB
JavaScript
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"];
}