@fr0st/datetime 6.0.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Formats.md +475 -0
- package/LICENSE +0 -0
- package/README.md +407 -1868
- package/dist/frost-datetime.js +2526 -2376
- package/dist/frost-datetime.js.map +1 -1
- package/dist/frost-datetime.min.js +2 -1
- package/dist/frost-datetime.min.js.map +1 -1
- package/package.json +32 -19
- package/src/date-time.js +2094 -90
- package/src/factory.js +29 -19
- package/src/formatter/format.js +38 -29
- package/src/formatter/locale.js +80 -0
- package/src/formatter/locales.js +2 -2
- package/src/formatter/parse.js +26 -12
- package/src/formatter/tokens.js +113 -123
- package/src/formatter/utility.js +38 -64
- package/src/formatter/values.js +26 -22
- package/src/helpers.js +178 -52
- package/src/index.js +1 -186
- package/src/vars.js +4 -4
- package/src/prototype/attributes-get.js +0 -163
- package/src/prototype/attributes-set.js +0 -281
- package/src/prototype/comparisons.js +0 -605
- package/src/prototype/manipulate.js +0 -395
- package/src/prototype/output.js +0 -89
- package/src/prototype/utility.js +0 -127
- package/src/static/create.js +0 -222
- package/src/static/utility.js +0 -103
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frost-datetime.js","sources":["../src/factory.js","../src/vars.js","../src/helpers.js","../src/formatter/values.js","../src/formatter/format.js","../src/date-time.js","../src/formatter/locales.js","../src/formatter/utility.js","../src/formatter/parse.js","../src/formatter/tokens.js","../src/static/create.js","../src/static/utility.js","../src/prototype/attributes-get.js","../src/prototype/attributes-set.js","../src/prototype/comparisons.js","../src/prototype/manipulate.js","../src/prototype/output.js","../src/prototype/utility.js","../src/index.js"],"sourcesContent":["/**\n * DateTime Factory\n */\n\nconst data = {};\n\n/**\n * Get values from cache (or generate if they don't exist).\n * @param {string} key The key for the values.\n * @param {function} callback The callback to generate the values.\n * @return {array} The cached values.\n */\nexport function getData(key, callback) {\n if (!(key in data)) {\n data[key] = callback();\n }\n\n return data[key];\n};\n\n/**\n * Create a new date formatter for a timeZone.\n * @param {string} timeZone The timeZone.\n * @param {object} options The options for the formatter.\n * @return {Intl.DateTimeFormat} A new DateTimeFormat object.\n */\nexport function getDateFormatter(timeZone) {\n return getData(\n `dateFormatter.${timeZone}`,\n (_) => makeFormatter('en', {\n timeZone,\n hourCycle: 'h23',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n }),\n );\n};\n\n/**\n * Create a new relative formatter for a locale.\n * @param {string} locale The locale.\n * @param {object} options The options for the formatter.\n * @return {Intl.RelativeTimeFormat} A new RelativeTimeFormat object.\n */\nexport function getRelativeFormatter(locale) {\n if (!('RelativeTimeFormat' in Intl)) {\n return null;\n }\n\n return getData(\n `relativeFormatter.${locale}`,\n (_) => new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto',\n style: 'long',\n }),\n );\n};\n\n/**\n * Create a new formatter for a locale.\n * @param {string} locale The locale.\n * @param {object} options The options for the formatter.\n * @return {Intl.DateTimeFormat} A new DateTimeFormat object.\n */\nexport function makeFormatter(locale, options) {\n return new Intl.DateTimeFormat(locale, {\n timeZone: 'UTC',\n ...options,\n });\n};\n","/**\n * DateTime Variables\n */\n\nconst resolvedOptions = (new Intl.DateTimeFormat).resolvedOptions();\n\nexport const config = {\n clampDates: true,\n defaultLocale: resolvedOptions.locale,\n defaultTimeZone: resolvedOptions.timeZone,\n};\n\nexport const dateStringTimeZoneRegExp = /\\s(?:UTC|GMT|Z|[\\+\\-]\\d)|\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{3}[\\+\\-]\\d{2}\\:\\d{2}/i;\n\nexport const formats = {\n date: 'eee MMM dd yyyy',\n rfc3339_extended: `yyyy-MM-dd'T'HH:mm:ss.SSSxxx`,\n string: 'eee MMM dd yyyy HH:mm:ss xx (VV)',\n time: 'HH:mm:ss xx (VV)',\n};\n\nexport const formatTokenRegExp = /([a-z])\\1*|'[^']*'/i;\n\nexport const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nexport const offsetRegExp = /(?:GMT)?([\\+\\-])(\\d{2})(\\:?)(\\d{2})?/;\n\nexport const parseOrderKeys = [\n ['year', 'weekYear'],\n ['era'],\n ['quarter', 'month', 'week', 'dayOfYear'],\n ['weekOfMonth'],\n ['date', 'weekDay'],\n ['weekDayInMonth'],\n ['hours24', 'hours12', 'dayPeriod'],\n ['minutes', 'seconds', 'milliseconds'],\n];\n\nexport const diffMethods = {\n year: 'diffInYears',\n month: 'diffInMonths',\n week: 'diffInWeeks',\n day: 'diffInDays',\n hour: 'diffInHours',\n minute: 'diffInMinutes',\n second: 'diffInSeconds',\n};\n\nexport const thresholds = {\n month: 12,\n week: null,\n day: 7,\n hour: 24,\n minute: 60,\n second: 60,\n};\n","import { getDateFormatter } from './factory.js';\nimport { diffMethods, thresholds } from './vars.js';\n\n/**\n * DateTime Helpers\n */\n\nexport function calculateDiff(date, other, timeUnit, relative = true) {\n other = other.setTimeZone(date.getTimeZone());\n\n switch (timeUnit) {\n case 'year':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n ),\n date.getYear() - other.getYear(),\n !relative,\n -1,\n );\n case 'month':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n date.getMonth(),\n ),\n (date.getYear() - other.getYear()) * 12 + date.getMonth() - other.getMonth(),\n !relative,\n -1,\n );\n case 'week':\n return compensateDiff(\n date,\n other.setWeekYear(\n date.getWeekYear(),\n date.getWeek(),\n ),\n (date - other) / 604800000,\n relative,\n );\n case 'day':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ),\n (date - other) / 86400000,\n relative,\n );\n case 'hour':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).setHours(\n date.getHours(),\n ),\n (date - other) / 3600000,\n relative,\n );\n case 'minute':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).setHours(\n date.getHours(),\n date.getMinutes(),\n ),\n (date - other) / 60000,\n relative,\n );\n case 'second':\n return compensateDiff(\n date,\n other.setYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n ),\n (date - other) / 1000,\n relative,\n );\n default:\n throw new Error('Invalid time unit supplied');\n }\n};\n\n/**\n * Compensate the difference between two dates.\n * @param {DateTime} date The DateTime.\n * @param {DateTime} other The DateTime to compare to.\n * @param {number} amount The amount to compensate.\n * @param {Boolean} [compensate=true] Whether to compensate the amount.\n * @param {number} [compensation=1] The compensation offset.\n * @return {number} The compensated amount.\n */\nfunction compensateDiff(date, other, amount, compensate = true, compensation = 1) {\n if (amount > 0) {\n amount = Math.floor(amount);\n\n if (compensate && date < other) {\n amount += compensation;\n }\n } else if (amount < 0) {\n amount = Math.ceil(amount);\n\n if (compensate && date > other) {\n amount -= compensation;\n }\n }\n\n return amount;\n};\n\n/**\n * Get the biggest difference between two dates.\n * @param {DateTime} date The DateTime.\n * @param {DateTime} [other] The DateTime to compare to.\n * @return {array} The biggest difference (amount and time unit).\n */\nexport function getBiggestDiff(date, other) {\n let lastResult;\n for (const [timeUnit, diffMethod] of Object.entries(diffMethods)) {\n const relativeDiff = date[diffMethod](other);\n\n if (lastResult && thresholds[timeUnit] && Math.abs(relativeDiff) >= thresholds[timeUnit]) {\n return lastResult;\n }\n\n const actualDiff = date[diffMethod](other, { relative: false });\n\n if (actualDiff) {\n return [relativeDiff, timeUnit];\n }\n\n if (relativeDiff) {\n lastResult = [relativeDiff, timeUnit];\n } else {\n lastResult = null;\n }\n }\n\n return lastResult ?\n lastResult :\n [0, 'second'];\n};\n\n/**\n * Get the offset for a DateTime.\n * @param {DateTime} date The DateTime.\n * @return {number} The offset.\n */\nexport function getOffset(date) {\n const timeZone = date.getTimeZone();\n\n if (timeZone === 'UTC') {\n return 0;\n }\n\n const utcString = getDateFormatter('UTC').format(date);\n const localString = getDateFormatter(timeZone).format(date);\n\n return (new Date(utcString) - new Date(localString)) / 60000;\n};\n\n/**\n * Get the number of milliseconds since the UNIX epoch (offset to timeZone).\n * @param {DateTime} date The DateTime.\n * @return {number} The number of milliseconds since the UNIX epoch (offset to timeZone).\n */\nexport function getOffsetTime(date) {\n return date.getTime() - (date.getTimeZoneOffset() * 60000);\n};\n\n/**\n * Compare a literal format string with a date string.\n * @param {string} formatString The literal format string.\n * @param {string} dateString The date string.\n */\nexport function parseCompare(formatString, dateString) {\n let i = 0;\n for (const char of formatString) {\n if (char !== dateString[i]) {\n throw new Error(`Unmatched character in DateTime string: ${char}`);\n }\n\n i++;\n }\n};\n\n/**\n * Generate methods for parsing a date.\n * @return {object} An object containing date parsing methods.\n */\nexport function parseFactory() {\n let isPM = false;\n let lastAM = true;\n\n return {\n date: {\n get: (datetime) => datetime.getDate(),\n set: (datetime, value) => datetime.setDate(value),\n },\n dayPeriod: {\n get: (datetime) => datetime.getHours() < 12 ? 0 : 1,\n set: (datetime, value) => {\n isPM = value;\n let hours = value ? 12 : 0;\n if (lastAM) {\n hours += datetime.getHours();\n }\n return datetime.setHours(hours);\n },\n },\n dayOfYear: {\n get: (datetime) => datetime.getDayOfYear(),\n set: (datetime, value) => datetime.setDayOfYear(value),\n },\n era: {\n get: (datetime) => datetime.getYear() < 1 ? 0 : 1,\n set: (datetime, value) => {\n const offset = value ? 1 : -1;\n return datetime.setYear(\n datetime.getYear() * offset,\n );\n },\n },\n hours12: {\n get: (datetime) => datetime.getHours() % 12,\n set: (datetime, value) => {\n if (isPM) {\n value += 12;\n }\n lastAM = true;\n return datetime.setHours(value);\n },\n },\n hours24: {\n get: (datetime) => datetime.getHours(),\n set: (datetime, value) => {\n lastAM = false;\n return datetime.setHours(value);\n },\n },\n milliseconds: {\n get: (datetime) => datetime.getMilliseconds(),\n set: (datetime, value) => datetime.setMilliseconds(value),\n },\n minutes: {\n get: (datetime) => datetime.getMinutes(),\n set: (datetime, value) => datetime.setMinutes(value),\n },\n month: {\n get: (datetime) => datetime.getMonth(),\n set: (datetime, value) => datetime.setMonth(value),\n },\n quarter: {\n get: (datetime) => datetime.getQuarter(),\n set: (datetime, value) => datetime.setQuarter(value),\n },\n seconds: {\n get: (datetime) => datetime.getSeconds(),\n set: (datetime, value) => datetime.setSeconds(value),\n },\n week: {\n get: (datetime) => datetime.getWeek(),\n set: (datetime, value) => datetime.setWeek(value),\n },\n weekDay: {\n get: (datetime) => datetime.getWeekDay(),\n set: (datetime, value) => datetime.setWeekDay(value),\n },\n weekDayInMonth: {\n get: (datetime) => datetime.getWeekDayInMonth(),\n set: (datetime, value) => datetime.setWeekDayInMonth(value),\n },\n weekOfMonth: {\n get: (datetime) => datetime.getWeekOfMonth(),\n set: (datetime, value) => datetime.setWeekOfMonth(value),\n },\n weekYear: {\n get: (datetime) => datetime.getWeekYear(),\n set: (datetime, value) => datetime.setWeekYear(value),\n },\n year: {\n get: (datetime) => {\n const year = datetime.getYear();\n return Math.abs(year);\n },\n set: (datetime, value) => datetime.setYear(value),\n },\n };\n};\n\n/**\n * Set the number of milliseconds since the UNIX epoch (offset to timeZone).\n * @param {DateTime} date The DateTime.\n * @param {number} time The number of milliseconds since the UNIX epoch (offset to timeZone).\n * @return {DateTime} The DateTime object.\n */\nexport function setOffsetTime(date, time) {\n const oldOffset = date.getTimeZoneOffset();\n\n const newTime = time + (oldOffset * 60000);\n const newDate = date.setTime(newTime);\n\n const offset = newDate.getTimeZoneOffset();\n\n if (oldOffset === offset) {\n return newDate;\n }\n\n // compensate for DST transitions\n return newDate.setTime(newTime - ((oldOffset - offset) * 60000));\n};\n","import { getData, makeFormatter } from './../factory.js';\n\n/**\n * DateFormatter Values\n */\n\n/**\n * Get cached day period values.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @return {array} The cached values.\n */\nexport function getDayPeriods(locale, type = 'long') {\n return getData(\n `periods.${locale}.${type}`,\n (_) => {\n const dayPeriodFormatter = makeFormatter(locale, { hour: 'numeric', hourCycle: 'h11' });\n return new Array(2)\n .fill()\n .map((_, index) =>\n dayPeriodFormatter.formatToParts(Date.UTC(2018, 0, 1, index * 12))\n .find((part) => part.type === 'dayPeriod')\n .value,\n );\n },\n );\n};\n\n/**\n * Get cached day values.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the values are standalone.\n * @return {array} The cached values.\n */\nexport function getDays(locale, type = 'long', standalone = true) {\n return getData(\n `days.${locale}.${type}.${standalone}`,\n (_) => {\n if (standalone) {\n const dayFormatter = makeFormatter(locale, { weekday: type });\n return new Array(7)\n .fill()\n .map((_, index) =>\n dayFormatter.format(Date.UTC(2018, 0, index)),\n );\n }\n\n const dayFormatter = makeFormatter(locale, { year: 'numeric', month: 'numeric', day: 'numeric', weekday: type });\n return new Array(7)\n .fill()\n .map((_, index) =>\n dayFormatter.formatToParts(Date.UTC(2018, 0, index))\n .find((part) => part.type === 'weekday')\n .value,\n );\n },\n );\n};\n\n/**\n * Get cached era values.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @return {array} The cached values.\n */\nexport function getEras(locale, type = 'long') {\n return getData(\n `eras.${locale}.${type}`,\n (_) => {\n const eraFormatter = makeFormatter(locale, { era: type });\n return new Array(2)\n .fill()\n .map((_, index) =>\n eraFormatter.formatToParts(Date.UTC(index - 1, 0, 1))\n .find((part) => part.type === 'era')\n .value,\n );\n },\n );\n};\n\n/**\n * Get cached month values.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the values are standalone.\n * @return {array} The cached values.\n */\nexport function getMonths(locale, type = 'long', standalone = true) {\n return getData(\n `months.${locale}.${type}.${standalone}`,\n (_) => {\n if (standalone) {\n const monthFormatter = makeFormatter(locale, { month: type });\n return new Array(12)\n .fill()\n .map((_, index) =>\n monthFormatter.format(Date.UTC(2018, index, 1)),\n );\n }\n\n const monthFormatter = makeFormatter(locale, { year: 'numeric', month: type, day: 'numeric' });\n return new Array(12)\n .fill()\n .map((_, index) =>\n monthFormatter.formatToParts(Date.UTC(2018, index, 1))\n .find((part) => part.type === 'month')\n .value,\n );\n },\n );\n};\n\n/**\n * Get cached number values.\n * @param {string} locale The locale.\n * @return {array} The cached values.\n */\nexport function getNumbers(locale) {\n return getData(\n `numbers.${locale}`,\n (_) => {\n const numberFormatter = makeFormatter(locale, { minute: 'numeric' });\n return new Array(10)\n .fill()\n .map((_, index) =>\n numberFormatter.format(Date.UTC(2018, 0, 1, 0, index)),\n );\n },\n );\n};\n\n/**\n * Get the RegExp for the number values.\n * @param {string} locale The locale.\n * @return {string} The number values RegExp.\n */\nexport function numberRegExp(locale) {\n const numbers = getNumbers(locale).join('|');\n return `(?:${numbers})+`;\n};\n","import { getRelativeFormatter, makeFormatter } from './../factory.js';\nimport { getDayPeriods, getDays, getEras, getMonths, getNumbers } from './values.js';\n\n/**\n * Format a day as a locale string.\n * @param {string} locale The locale.\n * @param {number} day The day to format (0-6).\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the value is standalone.\n * @return {string} The formatted string.\n */\nexport function formatDay(locale, day, type = 'long', standalone = true) {\n return getDays(locale, type, standalone)[day];\n};\n\n/**\n * Format a day period as a locale string.\n * @param {string} locale The locale.\n * @param {number} period The period to format (0-1).\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatDayPeriod(locale, period, type = 'long') {\n return getDayPeriods(locale, type)[period];\n};\n\n/**\n * Format an era as a locale string.\n * @param {string} locale The locale.\n * @param {number} era The period to format (0-1).\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatEra(locale, era, type = 'long') {\n return getEras(locale, type)[era];\n};\n\n/**\n * Format a month as a locale string.\n * @param {string} locale The locale.\n * @param {number} month The month to format (1-12).\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the value is standalone.\n * @return {string} The formatted string.\n */\nexport function formatMonth(locale, month, type = 'long', standalone = true) {\n return getMonths(locale, type, standalone)[month - 1];\n};\n\n/**\n * Format a number as a locale number string.\n * @param {string} locale The locale.\n * @param {number} number The number to format.\n * @param {number} [padding=0] The amount of padding to use.\n * @return {string} The formatted string.\n */\nexport function formatNumber(locale, number, padding = 0) {\n const numbers = getNumbers(locale);\n return `${number}`\n .padStart(padding, 0)\n .replace(/\\d/g, (match) => numbers[match]);\n};\n\n/**\n * Format a number to an offset string.\n * @param {number} offset The offset to format.\n * @param {Boolean} [useColon=true] Whether to use a colon seperator.\n * @param {Boolean} [optionalMinutes=false] Whether minutes are optional.\n * @return {string} The formatted offset string.\n */\nexport function formatOffset(offset, useColon = true, optionalMinutes = false) {\n const hours = Math.abs(\n (offset / 60) | 0,\n );\n const minutes = Math.abs(offset % 60);\n\n const sign = offset > 0 ?\n '-' :\n '+';\n const hourString = `${hours}`.padStart(2, 0);\n const minuteString = minutes || !optionalMinutes ?\n `${minutes}`.padStart(2, 0) :\n '';\n const colon = useColon && minuteString ?\n ':' :\n '';\n\n return `${sign}${hourString}${colon}${minuteString}`;\n};\n\n/**\n * Format a relative duration as a locale string.\n * @param {string} locale The locale.\n * @param {number} amount The amount of duration.\n * @param {string} unit The time unit.\n * @returns {string} The relative duration.\n */\nexport function formatRelative(locale, amount, unit) {\n const relativeFormatter = getRelativeFormatter(locale);\n\n if (!relativeFormatter) {\n throw new Error('RelativeTimeFormat not supported');\n }\n\n return relativeFormatter.format(amount, unit);\n};\n\n/**\n * Format a time zone as a locale string.\n * @param {string} locale The locale.\n * @param {number} timestamp The timestamp to use.\n * @param {string} timeZone The time zone to format.\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatTimeZoneName(locale, timestamp, timeZone, type = 'long') {\n return makeFormatter(locale, { second: 'numeric', timeZone, timeZoneName: type })\n .formatToParts(timestamp)\n .find((part) => part.type === 'timeZoneName')\n .value;\n};\n","import { getOffset } from './helpers.js';\nimport { config, dateStringTimeZoneRegExp, offsetRegExp } from './vars.js';\nimport { formatOffset } from './formatter/format.js';\n\n/**\n * DateTime class\n * @class\n */\nexport default class DateTime {\n /**\n * New DateTime constructor.\n * @param {string|number|null} [date] The date or timestamp to parse.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n */\n constructor(date = null, options = {}) {\n let timestamp;\n let adjustOffset = false;\n\n if (date === null) {\n timestamp = Date.now();\n } else if (!isNaN(parseInt(date)) && isFinite(date)) {\n timestamp = date;\n } else if (date === `${date}`) {\n timestamp = Date.parse(date);\n\n if (isNaN(timestamp)) {\n throw new Error('Invalid date string supplied');\n }\n\n if (!date.match(dateStringTimeZoneRegExp)) {\n timestamp -= new Date()\n .getTimezoneOffset() *\n 60000;\n }\n\n adjustOffset = true;\n } else {\n throw new Error('Invalid date supplied');\n }\n\n this._date = new Date(timestamp);\n this._dynamicTz = false;\n this.isValid = true;\n\n let timeZone = options.timeZone;\n\n if (!timeZone) {\n timeZone = config.defaultTimeZone;\n }\n\n if (['Z', 'GMT'].includes(timeZone)) {\n timeZone = 'UTC';\n }\n\n const match = timeZone.match(offsetRegExp);\n if (match) {\n this._offset = match[2] * 60 + parseInt(match[4] || 0);\n if (this._offset && match[1] === '+') {\n this._offset *= -1;\n }\n\n if (this._offset) {\n this._timeZone = formatOffset(this._offset);\n } else {\n this._dynamicTz = true;\n this._timeZone = 'UTC';\n }\n } else {\n this._dynamicTz = true;\n this._timeZone = timeZone;\n }\n\n if (this._dynamicTz) {\n this._offset = getOffset(this);\n }\n\n if (adjustOffset && this._offset) {\n const oldOffset = this._offset;\n\n this._date.setTime(this.getTime() + this._offset * 60000);\n\n if (this._dynamicTz) {\n this._offset = getOffset(this);\n\n // compensate for DST transitions\n if (oldOffset !== this._offset) {\n this._date.setTime(this.getTime() - ((oldOffset - offset) * 60000));\n }\n }\n }\n\n if (!('locale' in options)) {\n options.locale = config.defaultLocale;\n }\n\n this._locale = options.locale;\n }\n\n /**\n * Get the name of the current locale.\n * @return {string} The name of the current locale.\n */\n getLocale() {\n return this._locale;\n }\n\n /**\n * Get the number of milliseconds since the UNIX epoch.\n * @return {number} The number of milliseconds since the UNIX epoch.\n */\n getTime() {\n return this._date.getTime();\n }\n\n /**\n * Get the name of the current timeZone.\n * @return {string} The name of the current timeZone.\n */\n getTimeZone() {\n return this._timeZone;\n }\n\n /**\n * Get the UTC offset (in minutes) of the current timeZone.\n * @return {number} The UTC offset (in minutes) of the current timeZone.\n */\n getTimeZoneOffset() {\n return this._offset;\n }\n\n /**\n * Set the current locale.\n * @param {string} locale The name of the timeZone.\n * @return {DateTime} The DateTime object.\n */\n setLocale(locale) {\n return new DateTime(this.getTime(), {\n locale,\n timeZone: this._timeZone,\n });\n }\n\n /**\n * Set the number of milliseconds since the UNIX epoch.\n * @param {number} time The number of milliseconds since the UNIX epoch.\n * @return {DateTime} The DateTime object.\n */\n setTime(time) {\n return new DateTime(time, {\n locale: this._locale,\n timeZone: this._timeZone,\n });\n }\n\n /**\n * Set the current timeZone.\n * @param {string} timeZone The name of the timeZone.\n * @return {DateTime} The DateTime object.\n */\n setTimeZone(timeZone) {\n return new DateTime(this.getTime(), {\n locale: this._locale,\n timeZone,\n });\n }\n\n /**\n * Set the current UTC offset.\n * @param {number} offset The UTC offset (in minutes).\n * @return {DateTime} The DateTime object.\n */\n setTimeZoneOffset(offset) {\n return new DateTime(this.getTime(), {\n locale: this._locale,\n timeZone: formatOffset(offset),\n });\n }\n\n /**\n * Get the number of milliseconds since the UNIX epoch.\n * @return {number} The number of milliseconds since the UNIX epoch.\n */\n valueOf() {\n return this.getTime();\n }\n\n /**\n * Return a primitive value of the DateTime.\n * @param {string} hint The type hint.\n * @return {string|number}\n */\n [Symbol.toPrimitive](hint) {\n return hint === 'number' ?\n this.valueOf() :\n this.toString();\n }\n}\n","export const weekStart = { '1': ['af', 'am', 'ar-il', 'ar-sa', 'ar-ye', 'as', 'bn', 'bo', 'brx', 'ccp', 'ceb', 'chr', 'dav', 'dz', 'ebu', 'en', 'fil', 'gu', 'guz', 'haw', 'he', 'hi', 'id', 'ii', 'ja', 'jv', 'kam', 'ki', 'kln', 'km', 'kn', 'ko', 'kok', 'ks', 'lkt', 'lo', 'luo', 'luy', 'mas', 'mer', 'mgh', 'ml', 'mr', 'mt', 'my', 'nd', 'ne', 'om', 'or', 'pa', 'ps-pk', 'pt', 'qu', 'saq', 'sd', 'seh', 'sn', 'ta', 'te', 'th', 'ti', 'ug', 'ur', 'xh', 'yue', 'zh', 'zu'], '7': ['ar', 'ckb', 'en-ae', 'en-sd', 'fa', 'kab', 'lrc', 'mzn', 'ps'] };\nexport const minDaysInFirstWeek = { '4': ['ast', 'bg', 'br', 'ca', 'ce', 'cs', 'cy', 'da', 'de', 'dsb', 'el', 'en-at', 'en-be', 'en-ch', 'en-de', 'en-dk', 'en-fi', 'en-fj', 'en-gb', 'en-gg', 'en-gi', 'en-ie', 'en-im', 'en-je', 'en-nl', 'en-se', 'es', 'et', 'eu', 'fi', 'fo', 'fr', 'fur', 'fy', 'ga', 'gd', 'gl', 'gsw', 'gv', 'hsb', 'hu', 'is', 'it', 'ksh', 'kw', 'lb', 'lt', 'nb', 'nds', 'nl', 'nn', 'os-ru', 'pl', 'pt-ch', 'pt-lu', 'pt-pt', 'rm', 'ru', 'sah', 'se', 'sk', 'smn', 'sv', 'tt', 'wae'] };\n","import { minDaysInFirstWeek, weekStart } from './locales.js';\nimport { getData } from './../factory.js';\n\n/**\n * Get the formatting type from the component token length.\n * @param {number} length The component token length.\n * @return {string} The formatting type.\n */\nexport function getType(length) {\n switch (length) {\n case 5:\n return 'narrow';\n case 4:\n return 'long';\n default:\n return 'short';\n }\n};\n\n/**\n * Get the minimum days.\n * @param {string} locale The locale.\n * @return {number} The minimum days.\n */\nexport function minimumDays(locale) {\n return getData(\n `minimumDays.${locale}`,\n (_) => {\n let minDays = 1;\n const localeTest = locale.toLowerCase().split('-');\n while (minDays === 1 && localeTest.length) {\n for (const days in minDaysInFirstWeek) {\n if (!{}.hasOwnProperty.call(minDaysInFirstWeek, days)) {\n continue;\n }\n\n const locales = minDaysInFirstWeek[days];\n\n if (locales.includes(localeTest.join('-'))) {\n minDays = parseInt(days);\n break;\n }\n }\n\n localeTest.pop();\n }\n\n return minDays;\n },\n );\n};\n\n/**\n * Get the week start offset for a locale.\n * @param {string} [locale] The locale to load.\n * @return {number} The week start offset.\n */\nfunction weekStartOffset(locale) {\n return getData(\n `weekStartOffset.${locale}`,\n (_) => {\n let weekStarted;\n const localeTest = locale.toLowerCase().split('-');\n while (!weekStarted && localeTest.length) {\n for (const start in weekStart) {\n if (!{}.hasOwnProperty.call(weekStart, start)) {\n continue;\n }\n\n const locales = weekStart[start];\n\n if (locales.includes(localeTest.join('-'))) {\n weekStarted = parseInt(start);\n break;\n }\n }\n\n localeTest.pop();\n }\n\n return weekStarted ?\n weekStarted - 2 :\n 0;\n },\n );\n};\n\n/**\n * Convert a day of the week to a local format.\n * @param {string} locale The locale.\n * @param {number} day The day of the week.\n * @return {number} The local day of the week.\n */\nexport function weekDay(locale, day) {\n return (7 + parseInt(day) - weekStartOffset(locale)) % 7 || 7;\n};\n","import { getDayPeriods, getDays, getEras, getMonths, getNumbers } from './values.js';\nimport { weekDay } from './utility.js';\n\n/**\n * Parse a day from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the value is standalone.\n * @return {number} The day number (0-6).\n */\nexport function parseDay(locale, value, type = 'long', standalone = true) {\n const day = getDays(locale, type, standalone).indexOf(value) || 7;\n return weekDay(locale, day);\n};\n\n/**\n * Parse a day period from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @return {number} The day period (0-1).\n */\nexport function parseDayPeriod(locale, value, type = 'long') {\n return getDayPeriods(locale, type).indexOf(value);\n};\n\n/**\n * Parse an era from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @return {number} The era (0-1).\n */\nexport function parseEra(locale, value, type = 'long') {\n return getEras(locale, type).indexOf(value);\n};\n\n/**\n * Parse a month from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @param {Boolean} [standalone=true] Whether the value is standalone.\n * @return {number} The month number (1-12).\n */\nexport function parseMonth(locale, value, type = 'long', standalone = true) {\n return getMonths(locale, type, standalone).indexOf(value) + 1;\n};\n\n/**\n * Parse a number from a locale number string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @return {number} The parsed number.\n */\nexport function parseNumber(locale, value) {\n const numbers = getNumbers(locale);\n return parseInt(\n `${value}`.replace(/./g, (match) => numbers.indexOf(match)),\n );\n};\n","import { formatDay, formatMonth, formatNumber, formatOffset } from './format.js';\nimport { parseDay, parseDayPeriod, parseEra, parseMonth, parseNumber } from './parse.js';\nimport { getType } from './utility.js';\nimport { getDayPeriods, getDays, getEras, getMonths, numberRegExp } from './values.js';\n\n/**\n * DateFormatter Format Data\n */\n\nexport default {\n\n /* ERA */\n\n G: {\n key: 'era',\n maxLength: 5,\n regex: (locale, length) => {\n const type = getType(length);\n return getEras(locale, type).join('|');\n },\n input: (locale, value, length) => {\n const type = getType(length);\n return parseEra(locale, value, type);\n },\n output: (datetime, length) => {\n const type = getType(length);\n return datetime.era(type);\n },\n },\n\n /* YEAR */\n\n // year\n y: {\n key: 'year',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value, length) => {\n value = parseNumber(locale, value);\n\n if (length !== 2 || `${value}`.length !== 2) {\n return value;\n }\n\n return value > 40 ?\n 1900 + value :\n 2000 + value;\n },\n output: (datetime, length) => {\n let year = datetime.getYear();\n if (length === 2) {\n year = `${year}`.slice(-2);\n }\n return formatNumber(\n datetime.getLocale(),\n Math.abs(year),\n length,\n );\n },\n },\n\n // week year\n Y: {\n key: 'weekYear',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value, length) => {\n value = parseNumber(locale, value);\n\n if (length !== 2 || `${value}`.length !== 2) {\n return value;\n }\n\n return value > 40 ?\n 1900 + value :\n 2000 + value;\n },\n output: (datetime, length) => {\n let year = datetime.getWeekYear();\n if (length === 2) {\n year = `${year}`.slice(-2);\n }\n return formatNumber(\n datetime.getLocale(),\n Math.abs(year),\n length,\n );\n },\n },\n\n /* QUARTER */\n\n // quarter\n Q: {\n key: 'quarter',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getQuarter(),\n length,\n ),\n },\n\n // quarter (standalone)\n q: {\n key: 'quarter',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getQuarter(),\n length,\n ),\n },\n\n /* MONTH */\n\n // month\n M: {\n key: 'month',\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return getMonths(locale, type, false).join('|');\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 5:\n return null;\n case 4:\n case 3:\n const type = getType(length);\n return parseMonth(locale, value, type, false);\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n const month = datetime.getMonth();\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return formatMonth(locale, month, type, false);\n default:\n return formatNumber(locale, month, length);\n }\n },\n },\n\n // month (standalone)\n L: {\n key: 'month',\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return getMonths(locale, type).join('|');\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 5:\n return null;\n case 4:\n case 3:\n const type = getType(length);\n return parseMonth(locale, value, type);\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n const month = datetime.getMonth();\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return formatMonth(locale, month, type);\n default:\n return formatNumber(locale, month, length);\n }\n },\n },\n\n /* WEEK */\n\n // local week\n w: {\n key: 'week',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeek(),\n length,\n ),\n },\n\n // local week of month\n W: {\n key: 'weekOfMonth',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeekOfMonth(),\n ),\n },\n\n /* DAY */\n\n // day of month\n d: {\n key: 'date',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getDate(),\n length,\n ),\n },\n\n // day of year\n D: {\n key: 'dayOfYear',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getDayOfYear(),\n length,\n ),\n },\n\n // day of week in month\n F: {\n key: 'weekDayInMonth',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeekDayInMonth(),\n ),\n },\n\n // week day name\n E: {\n key: 'weekDay',\n regex: (locale, length) => {\n const type = getType(length);\n return getDays(locale, type, false).join('|');\n },\n input: (locale, value, length) => {\n if (length === 5) {\n return null;\n }\n\n const type = getType(length);\n return parseDay(locale, value, type, false);\n },\n output: (datetime, length) => {\n const type = getType(length);\n const locale = datetime.getLocale();\n const day = datetime.getDay();\n return formatDay(locale, day, type, false);\n },\n },\n\n // week day\n e: {\n key: 'weekDay',\n maxLength: 5,\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return getDays(locale, type, false).join('|');\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 5:\n return null;\n case 4:\n case 3:\n const type = getType(length);\n return parseDay(locale, value, type, false);\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n const day = datetime.getDay();\n return formatDay(locale, day, type, false);\n default:\n const weekDay = datetime.getWeekDay();\n return formatNumber(locale, weekDay, length);\n }\n },\n },\n\n // week day (standalone)\n c: {\n key: 'weekDay',\n maxLength: 5,\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n return getDays(locale, type).join('|');\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 5:\n return null;\n case 4:\n case 3:\n const type = getType(length);\n return parseDay(locale, value, type);\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n switch (length) {\n case 5:\n case 4:\n case 3:\n const type = getType(length);\n const day = datetime.getDay();\n return formatDay(locale, day, type);\n default:\n const weekDay = datetime.getWeekDay();\n return formatNumber(locale, weekDay);\n }\n },\n },\n\n /* PERIOD */\n\n a: {\n key: 'dayPeriod',\n regex: (locale, length) => {\n const type = getType(length);\n return getDayPeriods(locale, type).join('|');\n },\n input: (locale, value, length) => {\n const type = getType(length);\n return parseDayPeriod(locale, value, type);\n },\n output: (datetime, length) => {\n const type = getType(length);\n return datetime.dayPeriod(type);\n },\n },\n\n /* HOUR */\n\n h: {\n key: 'hours12',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => {\n value = parseNumber(locale, value);\n if (value === 12) {\n value = 0;\n }\n return value;\n },\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() % 12 || 12,\n length,\n ),\n },\n\n H: {\n key: 'hours24',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours(),\n length,\n ),\n },\n\n K: {\n key: 'hours12',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() % 12,\n length,\n ),\n },\n\n k: {\n key: 'hours24',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => {\n value = parseNumber(locale, value);\n if (value === 24) {\n value = 0;\n }\n return value;\n },\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() || 24,\n length,\n ),\n },\n\n /* MINUTE */\n\n m: {\n key: 'minutes',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getMinutes(),\n length,\n ),\n },\n\n /* SECOND */\n\n s: {\n key: 'seconds',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getSeconds(),\n length,\n ),\n },\n\n /* FRACTIONAL */\n\n S: {\n key: 'milliseconds',\n regex: (locale) => numberRegExp(locale),\n input: (_) => 0,\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n `${Math.floor(\n datetime.getMilliseconds() *\n 1000,\n )}`.padEnd(length, '0').slice(0, length),\n ),\n },\n\n /* TIMEZONE/OFFSET */\n\n z: {\n output: (datetime, length) => {\n if (length === 5) {\n length = 1;\n }\n const type = getType(length);\n return datetime.timeZoneName(type);\n },\n },\n\n Z: {\n key: 'timeZone',\n regex: (_, length) => {\n switch (length) {\n case 5:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|Z`;\n case 4:\n return `GMT[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|GMT`;\n default:\n return `[\\\\+\\\\-]\\\\d{4}`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n\n let useColon = true;\n let prefix = '';\n switch (length) {\n case 5:\n if (!offset) {\n return 'Z';\n }\n break;\n case 4:\n prefix = 'GMT';\n\n if (!offset) {\n return prefix;\n }\n\n break;\n default:\n useColon = false;\n break;\n }\n\n return prefix + formatOffset(offset, useColon);\n },\n },\n\n O: {\n key: 'timeZone',\n regex: (_, length) => {\n switch (length) {\n case 4:\n return `GMT[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|GMT`;\n default:\n return `GMT[\\\\+\\\\-]\\\\d{2}|GMT`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n const prefix = 'GMT';\n\n if (!offset) {\n return prefix;\n }\n\n let optionalMinutes = false;\n switch (length) {\n case 4:\n break;\n default:\n optionalMinutes = true;\n }\n\n return prefix + formatOffset(offset, true, optionalMinutes);\n },\n },\n\n V: {\n key: 'timeZone',\n regex: (_) => '([a-zA-Z_\\/]+)',\n input: (_, value) => value,\n output: (datetime) => datetime.getTimeZone(),\n },\n\n X: {\n key: 'timeZone',\n regex: (_, length) => {\n switch (length) {\n case 5:\n case 3:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|Z`;\n case 4:\n case 2:\n return `[\\\\+\\\\-]\\\\d{4}|Z`;\n default:\n return `[\\\\+\\\\-]\\\\d{2}(?:\\\\d{2})?|Z`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n\n if (!offset) {\n return 'Z';\n }\n\n let useColon;\n switch (length) {\n case 5:\n case 3:\n useColon = true;\n break;\n default:\n useColon = false;\n break;\n }\n\n return formatOffset(offset, useColon, length === 1);\n },\n },\n\n x: {\n key: 'timeZone',\n regex: (_, length) => {\n switch (length) {\n case 5:\n case 3:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}`;\n case 4:\n case 2:\n return `[\\\\+\\\\-]\\\\d{4}`;\n default:\n return `[\\\\+\\\\-]\\\\d{2}(?:\\\\d{2})?`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n let useColon;\n switch (length) {\n case 5:\n case 3:\n useColon = true;\n break;\n default:\n useColon = false;\n break;\n }\n\n return formatOffset(datetime.getTimeZoneOffset(), useColon, length === 1);\n },\n },\n\n};\n","import DateTime from './../date-time.js';\nimport { parseCompare, parseFactory } from './../helpers.js';\nimport { config, formats, formatTokenRegExp, parseOrderKeys } from './../vars.js';\nimport tokens from './../formatter/tokens.js';\n\n/**\n * DateTime (Static) Creation\n */\n\n/**\n * Create a new DateTime from an array.\n * @param {number[]} dateArray The date to parse.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function fromArray(dateArray, options = {}) {\n const dateValues = dateArray.slice(0, 3);\n const timeValues = dateArray.slice(3);\n\n if (dateValues.length < 3) {\n dateValues.push(...new Array(3 - dateValues.length).fill(1));\n }\n\n if (timeValues.length < 4) {\n timeValues.push(...new Array(4 - timeValues.length).fill(0));\n }\n\n return new DateTime(null, options)\n .setTimestamp(0)\n .setYear(...dateValues)\n .setHours(...timeValues);\n};\n\n/**\n * Create a new DateTime from a Date.\n * @param {Date} date The date.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function fromDate(date, options = {}) {\n return new DateTime(date.getTime(), options);\n};\n\n/**\n * Create a new DateTime from a format string.\n * @param {string} formatString The format string.\n * @param {string} dateString The date string.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function fromFormat(formatString, dateString, options = {}) {\n if (!('locale' in options)) {\n options.locale = config.defaultLocale;\n }\n\n const values = [];\n\n let match;\n while (formatString && (match = formatString.match(formatTokenRegExp))) {\n const token = match[1];\n const position = match.index;\n const length = match[0].length;\n\n if (position) {\n const formatTest = formatString.substring(0, position);\n parseCompare(formatTest, dateString);\n }\n\n formatString = formatString.substring(position + length);\n dateString = dateString.substring(position);\n\n if (!token) {\n const literal = match[0].slice(1, -1);\n parseCompare(literal || `'`, dateString);\n dateString = dateString.substring(literal.length);\n continue;\n }\n\n if (!(token in tokens)) {\n throw new Error(`Invalid token in DateTime format: ${token}`);\n }\n\n const regExp = tokens[token].regex(options.locale, length);\n const matchedValue = dateString.match(new RegExp(`^${regExp}`));\n\n if (!matchedValue) {\n throw new Error(`Unmatched token in DateTime string: ${token}`);\n }\n\n const literal = matchedValue[0];\n const value = tokens[token].input(options.locale, literal, length);\n\n if (value !== null) {\n const key = tokens[token].key;\n values.push({ key, value, literal, token, length });\n }\n\n dateString = dateString.substring(literal.length);\n }\n\n if (formatString) {\n parseCompare(formatString, dateString);\n }\n\n if (!('timeZone' in options)) {\n options.timeZone = config.defaultTimeZone;\n }\n\n let timeZone = options.timeZone;\n for (const { key, value } of values) {\n if (key !== 'timeZone') {\n continue;\n }\n\n timeZone = value;\n }\n\n let datetime = this.fromTimestamp(0, {\n locale: options.locale,\n }).setYear(1).setTimeZone(timeZone);\n\n const methods = parseFactory();\n\n const testValues = [];\n\n for (const subKeys of parseOrderKeys) {\n for (const subKey of subKeys) {\n if (subKey === 'era' && !values.find((data) => data.key === 'year')) {\n continue;\n }\n\n for (const data of values) {\n const { key, value, literal, token, length } = data;\n\n if (key !== subKey) {\n continue;\n }\n\n // skip narrow month and day names if output already matches\n if (length === 5 && ['M', 'L', 'E', 'e', 'c'].includes(token)) {\n const fullToken = token.repeat(length);\n if (datetime.format(fullToken) === literal) {\n continue;\n }\n }\n\n datetime = methods[key].set(datetime, value);\n testValues.push(data);\n }\n }\n }\n\n let isValid = true;\n for (const { key, value } of testValues) {\n if (key in methods && methods[key].get(datetime) !== value) {\n isValid = false;\n break;\n }\n }\n\n if (options.timeZone !== timeZone) {\n datetime = datetime.setTimeZone(options.timeZone);\n }\n\n datetime.isValid = isValid;\n\n return datetime;\n};\n\n/**\n * Create a new DateTime from an ISO format string.\n * @param {string} dateString The date string.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function fromISOString(dateString, options = {}) {\n let date = this.fromFormat(formats.rfc3339_extended, dateString, {\n locale: 'en',\n });\n\n if ('timeZone' in options) {\n date = date.setTimeZone(options.timeZone);\n }\n\n if ('locale' in options) {\n date = date.setLocale(options.locale);\n }\n\n return date;\n};\n\n/**\n * Create a new DateTime from a timestamp.\n * @param {number} timestamp The timestamp.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function fromTimestamp(timestamp, options = {}) {\n return new DateTime(null, options)\n .setTimestamp(timestamp);\n};\n\n/**\n * Create a new DateTime for the current time.\n * @param {object} [options] Options for the new DateTime.\n * @param {string} [options.timeZone] The timeZone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime object.\n */\nexport function now(options = {}) {\n return new DateTime(null, options);\n};\n","import { config, monthDays } from './../vars.js';\n\n/**\n * DateTime (Static) Utility\n */\n\n/**\n * Get the day of the year for a year, month and date.\n * @param {number} year The year.\n * @param {number} month The month. (1, 12)\n * @param {number} date The date.\n * @return {number} The day of the year. (1, 366)\n */\nexport function dayOfYear(year, month, date) {\n return new Array(month - 1)\n .fill()\n .reduce(\n (d, _, i) =>\n d + daysInMonth(year, i + 1),\n date,\n );\n};\n\n/**\n * Get the number of days in a month, from a year and month.\n * @param {number} year The year.\n * @param {number} month The month. (1, 12)\n * @return {number} The number of days in the month.\n */\nexport function daysInMonth(year, month) {\n const date = new Date(Date.UTC(year, month - 1));\n month = date.getUTCMonth();\n\n return monthDays[month] +\n (\n month == 1 && isLeapYear(\n date.getUTCFullYear(),\n ) ?\n 1 :\n 0\n );\n};\n\n/**\n * Get the number of days in a year.\n * @param {number} year The year.\n * @return {number} The number of days in the year.\n */\nexport function daysInYear(year) {\n return !isLeapYear(year) ?\n 365 :\n 366;\n};\n\n/**\n * Get the default locale.\n * @return {string} The locale.\n */\nexport function getDefaultLocale() {\n return config.defaultLocale;\n};\n\n/**\n * Get the default timeZone.\n * @return {string} The name of the timeZone.\n */\nexport function getDefaultTimeZone() {\n return config.defaultTimeZone;\n};\n\n/**\n * Return true if a year is a leap year.\n * @param {number} year The year.\n * @return {Boolean} TRUE if the year is a leap year, otherwise FALSE.\n */\nexport function isLeapYear(year) {\n return new Date(year, 1, 29)\n .getDate() === 29;\n};\n\n/**\n * Set whether dates will be clamped when changing months.\n * @param {Boolean} clampDates Whether to clamp dates.\n */\nexport function setDateClamping(clampDates) {\n config.clampDates = clampDates;\n};\n\n/**\n * Set the default locale.\n * @param {string} locale The locale.\n */\nexport function setDefaultLocale(locale) {\n config.defaultLocale = locale;\n};\n\n/**\n * Set the default timeZone.\n * @param {string} timeZone The name of the timeZone.\n */\nexport function setDefaultTimeZone(timeZone) {\n config.defaultTimeZone = timeZone;\n};\n","import { getOffsetTime } from './../helpers.js';\nimport { minimumDays, weekDay } from './../formatter/utility.js';\nimport { dayOfYear } from './../static/utility.js';\n\n/**\n * DateTime Attributes (Get)\n */\n\n/**\n * Get the date of the month in current timeZone.\n * @return {number} The date of the month.\n */\nexport function getDate() {\n return new Date(getOffsetTime(this)).getUTCDate();\n};\n\n/**\n * Get the day of the week in current timeZone.\n * @return {number} The day of the week. (0 - Sunday, 6 - Saturday)\n */\nexport function getDay() {\n return new Date(getOffsetTime(this)).getUTCDay();\n};\n\n/**\n * Get the day of the year in current timeZone.\n * @return {number} The day of the year. (1, 366)\n */\nexport function getDayOfYear() {\n return dayOfYear(\n this.getYear(),\n this.getMonth(),\n this.getDate(),\n );\n};\n\n/**\n * Get the hours of the day in current timeZone.\n * @return {number} The hours of the day. (0, 23)\n */\nexport function getHours() {\n return new Date(getOffsetTime(this)).getUTCHours();\n};\n\n/**\n * Get the milliseconds in current timeZone.\n * @return {number} The milliseconds.\n */\nexport function getMilliseconds() {\n return new Date(getOffsetTime(this)).getUTCMilliseconds();\n};\n\n/**\n * Get the minutes in current timeZone.\n * @return {number} The minutes. (0, 59)\n */\nexport function getMinutes() {\n return new Date(getOffsetTime(this)).getUTCMinutes();\n};\n\n/**\n * Get the month in current timeZone.\n * @return {number} The month. (1, 12)\n */\nexport function getMonth() {\n return new Date(getOffsetTime(this)).getUTCMonth() + 1;\n};\n\n/**\n * Get the quarter of the year in current timeZone.\n * @return {number} The quarter of the year. (1, 4)\n */\nexport function getQuarter() {\n return Math.ceil(this.getMonth() / 3);\n};\n\n/**\n * Get the seconds in current timeZone.\n * @return {number} The seconds. (0, 59)\n */\nexport function getSeconds() {\n return new Date(getOffsetTime(this)).getUTCSeconds();\n};\n\n/**\n * Get the number of seconds since the UNIX epoch.\n * @return {number} The number of seconds since the UNIX epoch.\n */\nexport function getTimestamp() {\n return Math.floor(this.getTime() / 1000);\n};\n\n/**\n * Get the local week in current timeZone.\n * @return {number} The local week. (1, 53)\n */\nexport function getWeek() {\n const thisWeek = this.startOfDay().setWeekDay(1);\n const firstWeek = thisWeek.setWeek(1, 1);\n\n return 1 +\n (\n (\n (thisWeek - firstWeek) /\n 604800000\n ) | 0\n );\n};\n\n/**\n * Get the local day of the week in current timeZone.\n * @return {number} The local day of the week. (1 - 7)\n */\nexport function getWeekDay() {\n return weekDay(\n this.getLocale(),\n this.getDay(),\n );\n};\n\n/**\n * Get the week day in month in current timeZone.\n * @return {number} The week day in month.\n */\nexport function getWeekDayInMonth() {\n const thisWeek = this.getWeek();\n const first = this.setDate(1);\n const firstWeek = first.getWeek();\n const offset = first.getWeekDay() > this.getWeekDay() ?\n 0 : 1;\n return firstWeek > thisWeek ?\n thisWeek + offset :\n thisWeek - firstWeek + offset;\n};\n\n/**\n * Get the week of month in current timeZone.\n * @return {number} The week of month.\n */\nexport function getWeekOfMonth() {\n const thisWeek = this.getWeek();\n const firstWeek = this.setDate(1).getWeek();\n return firstWeek > thisWeek ?\n thisWeek + 1 :\n thisWeek - firstWeek + 1;\n};\n\n/**\n * Get the week year in current timeZone.\n * @return {number} The week year.\n */\nexport function getWeekYear() {\n const minDays = minimumDays(this.getLocale());\n return this.setWeekDay(7 - minDays + 1).getYear();\n};\n\n/**\n * Get the year in current timeZone.\n * @return {number} The year.\n */\nexport function getYear() {\n return new Date(getOffsetTime(this)).getUTCFullYear();\n};\n","import DateTime from './../date-time.js';\nimport { getOffsetTime, setOffsetTime } from './../helpers.js';\nimport { config } from './../vars.js';\nimport { minimumDays } from './../formatter/utility.js';\nimport { daysInMonth } from './../static/utility.js';\n\n/**\n * DateTime Attributes (Set)\n */\n\n/**\n * Set the date of the month in current timeZone.\n * @param {number} date The date of the month.\n * @return {DateTime} The DateTime object.\n */\nexport function setDate(date) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(date),\n );\n};\n\n/**\n * Set the day of the week in current timeZone.\n * @param {number} day The day of the week. (0 - Sunday, 6 - Saturday)\n * @return {DateTime} The DateTime object.\n */\nexport function setDay(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(\n this.getDate() -\n this.getDay() +\n parseInt(day),\n ),\n );\n};\n\n/**\n * Set the day of the year in current timeZone.\n * @param {number} day The day of the year. (1, 366)\n * @return {DateTime} The DateTime object.\n */\nexport function setDayOfYear(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n 0,\n day,\n ),\n );\n};\n\n/**\n * Set the hours in current timeZone (and optionally, minutes, seconds and milliseconds).\n * @param {number} hours The hours. (0, 23)\n * @param {number} [minutes] The minutes. (0, 59)\n * @param {number} [seconds] The seconds. (0, 59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} The DateTime object.\n */\nexport function setHours(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCHours(...args),\n );\n};\n\n/**\n * Set the milliseconds in current timeZone.\n * @param {number} milliseconds The milliseconds.\n * @return {DateTime} The DateTime object.\n */\nexport function setMilliseconds(milliseconds) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMilliseconds(milliseconds),\n );\n};\n\n/**\n * Set the minutes in current timeZone (and optionally, seconds and milliseconds).\n * @param {number} minutes The minutes. (0, 59)\n * @param {number} [seconds] The seconds. (0, 59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} The DateTime object.\n */\nexport function setMinutes(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMinutes(...args),\n );\n};\n\n/**\n * Set the month in current timeZone (and optionally, date).\n * @param {number} month The month. (1, 12)\n * @param {number|null} [date] The date of the month.\n * @return {DateTime} The DateTime object.\n */\nexport function setMonth(month, date = null) {\n if (date === null) {\n date = this.getDate();\n\n if (config.clampDates) {\n date = Math.min(\n date,\n daysInMonth(\n this.getYear(),\n month,\n ),\n );\n }\n }\n\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n month - 1,\n date,\n ),\n );\n};\n\n/**\n * Set the quarter of the year in current timeZone.\n * @param {number} quarter The quarter of the year. (1, 4)\n * @return {DateTime} The DateTime object.\n */\nexport function setQuarter(quarter) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n quarter * 3 -\n 3,\n ),\n );\n};\n\n/**\n * Set the seconds in current timeZone (and optionally, milliseconds).\n * @param {number} seconds The seconds. (0, 59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} The DateTime object.\n */\nexport function setSeconds(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCSeconds(...args),\n );\n};\n\n/**\n * Set the number of seconds since the UNIX epoch.\n * @param {number} timestamp The number of seconds since the UNIX epoch.\n * @return {DateTime} The DateTime object.\n */\nexport function setTimestamp(timestamp) {\n return this.setTime(timestamp * 1000);\n};\n\n/**\n * Set the local day of the week in current timeZone (and optionally, day of the week).\n * @param {number} week The local week.\n * @param {number|null} [day] The local day of the week. (1 - 7)\n * @return {DateTime} The DateTime object.\n */\nexport function setWeek(week, day = null) {\n if (day === null) {\n day = this.getWeekDay();\n }\n\n const minDays = minimumDays(this.getLocale());\n return this.setYear(this.getWeekYear(), 1, minDays + ((week - 1) * 7)).setWeekDay(day);\n};\n\n/**\n * Set the local day of the week in current timeZone.\n * @param {number} day The local day of the week. (1 - 7)\n * @return {DateTime} The DateTime object.\n */\nexport function setWeekDay(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(\n this.getDate() -\n this.getWeekDay() +\n parseInt(day),\n ),\n );\n};\n\n/**\n * Set the week day in month in current timeZone.\n * @param {number} week The week day in month.\n * @return {DateTime} The DateTime object.\n */\nexport function setWeekDayInMonth(week) {\n return this.setDate(\n this.getDate() +\n (\n week -\n this.getWeekDayInMonth()\n ) * 7,\n );\n};\n\n/**\n * Set the week of month in current timeZone.\n * @param {number} week The week of month.\n * @return {DateTime} The DateTime object.\n */\nexport function setWeekOfMonth(week) {\n return this.setDate(\n this.getDate() +\n (\n week -\n this.getWeekOfMonth()\n ) * 7,\n );\n};\n\n/**\n * Set the local day of the week in current timeZone (and optionally, week and day of the week).\n * @param {number} year The local year.\n * @param {number|null} [week] The local week.\n * @param {number|null} [day] The local day of the week. (1 - 7)\n * @return {DateTime} The DateTime object.\n */\nexport function setWeekYear(year, week = null, day = null) {\n const minDays = minimumDays(this.getLocale());\n\n if (week === null) {\n week = Math.min(\n this.getWeek(),\n DateTime.fromArray([year, 1, minDays]).weeksInYear(),\n );\n }\n\n if (day === null) {\n day = this.getWeekDay();\n }\n\n return this.setYear(year, 1, minDays + ((week - 1) * 7)).setWeekDay(day);\n};\n\n/**\n * Set the year in current timeZone (and optionally, month and date).\n * @param {number} year The year.\n * @param {number|null} [month] The month. (1, 12)\n * @param {number|null} [date] The date of the month.\n * @return {DateTime} The DateTime object.\n */\nexport function setYear(year, month = null, date = null) {\n if (month === null) {\n month = this.getMonth();\n }\n\n if (date === null) {\n date = this.getDate();\n\n if (config.clampDates) {\n date = Math.min(\n date,\n daysInMonth(\n this.getYear(),\n month,\n ),\n );\n }\n }\n\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCFullYear(\n year,\n month - 1,\n date,\n ),\n );\n};\n","import { calculateDiff, getBiggestDiff } from './../helpers.js';\nimport { formatRelative } from './../formatter/format.js';\n\n/**\n * DateTime Comparisons\n */\n\n/**\n * Get the difference between this and another Date in milliseconds.\n * @param {DateTime} other The date to compare to.\n * @return {number} The difference.\n */\nexport function diff(other) {\n return this - other;\n};\n\n/**\n * Get the difference between this and another Date in days.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInDays(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'day', relative);\n};\n\n/**\n * Get the difference between this and another Date in hours.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInHours(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'hour', relative);\n};\n\n/**\n * Get the difference between this and another Date in minutes.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInMinutes(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'minute', relative);\n};\n\n/**\n * Get the difference between this and another Date in months.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInMonths(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'month', relative);\n};\n\n/**\n * Get the difference between this and another Date in seconds.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInSeconds(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'second', relative);\n};\n\n/**\n * Get the difference between this and another Date in weeks.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInWeeks(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'week', relative);\n};\n\n/**\n * Get the difference between this and another Date in years.\n * @param {DateTime} other The date to compare to.\n * @param {object} [options] The options for comparing the dates.\n * @param {Boolean} [options.relative=true] Whether to use the relative difference.\n * @return {number} The difference.\n */\nexport function diffInYears(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'year', relative);\n};\n\n/**\n * Get the difference between this and another Date in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in human readable form.\n */\nexport function humanDiff(other) {\n const [amount, unit] = getBiggestDiff(this, other);\n return formatRelative(this.getLocale(), amount, unit);\n};\n\n/**\n * Get the difference between this and another Date in days in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in days in human readable form.\n */\nexport function humanDiffInDays(other) {\n return formatRelative(this.getLocale(), this.diffInDays(other), 'day');\n};\n\n/**\n * Get the difference between this and another Date in hours in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in hours in human readable form.\n */\nexport function humanDiffInHours(other) {\n return formatRelative(this.getLocale(), this.diffInHours(other), 'hour');\n};\n\n/**\n * Get the difference between this and another Date in minutes in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in minutes in human readable form.\n */\nexport function humanDiffInMinutes(other) {\n return formatRelative(this.getLocale(), this.diffInMinutes(other), 'minute');\n};\n\n/**\n * Get the difference between this and another Date in months in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in months in human readable form.\n */\nexport function humanDiffInMonths(other) {\n return formatRelative(this.getLocale(), this.diffInMonths(other), 'month');\n};\n\n/**\n * Get the difference between this and another Date in seconds in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in seconds in human readable form.\n */\nexport function humanDiffInSeconds(other) {\n return formatRelative(this.getLocale(), this.diffInSeconds(other), 'second');\n};\n\n/**\n * Get the difference between this and another Date in weeks in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in weeks in human readable form.\n */\nexport function humanDiffInWeeks(other) {\n return formatRelative(this.getLocale(), this.diffInWeeks(other), 'week');\n};\n\n/**\n * Get the difference between this and another Date in years in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in years in human readable form.\n */\nexport function humanDiffInYears(other) {\n return formatRelative(this.getLocale(), this.diffInYears(other), 'year');\n};\n\n/**\n * Determine whether this DateTime is after another date.\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date, otherwise FALSE.\n */\nexport function isAfter(other) {\n return this.diff(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by day), otherwise FALSE.\n */\nexport function isAfterDay(other) {\n return this.diffInDays(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by hour), otherwise FALSE.\n */\nexport function isAfterHour(other) {\n return this.diffInHours(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by minute), otherwise FALSE.\n */\nexport function isAfterMinute(other) {\n return this.diffInMinutes(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by month), otherwise FALSE.\n */\nexport function isAfterMonth(other) {\n return this.diffInMonths(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by second), otherwise FALSE.\n */\nexport function isAfterSecond(other) {\n return this.diffInSeconds(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by week), otherwise FALSE.\n */\nexport function isAfterWeek(other) {\n return this.diffInWeeks(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is after another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is after the other date (comparing by year), otherwise FALSE.\n */\nexport function isAfterYear(other) {\n return this.diffInYears(other) > 0;\n}\n\n/**\n * Determine whether this DateTime is before another date.\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date, otherwise FALSE.\n */\nexport function isBefore(other) {\n return this.diff(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by day), otherwise FALSE.\n */\nexport function isBeforeDay(other) {\n return this.diffInDays(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by hour), otherwise FALSE.\n */\nexport function isBeforeHour(other) {\n return this.diffInHours(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by minute), otherwise FALSE.\n */\nexport function isBeforeMinute(other) {\n return this.diffInMinutes(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by month), otherwise FALSE.\n */\nexport function isBeforeMonth(other) {\n return this.diffInMonths(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by second), otherwise FALSE.\n */\nexport function isBeforeSecond(other) {\n return this.diffInSeconds(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by week), otherwise FALSE.\n */\nexport function isBeforeWeek(other) {\n return this.diffInWeeks(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is before another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is before the other date (comparing by year), otherwise FALSE.\n */\nexport function isBeforeYear(other) {\n return this.diffInYears(other) < 0;\n}\n\n/**\n * Determine whether this DateTime is between two other dates.\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates, otherwise FALSE.\n */\nexport function isBetween(start, end) {\n return this.isAfter(start) && this.isBefore(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by day).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by day), otherwise FALSE.\n */\nexport function isBetweenDay(start, end) {\n return this.isAfterDay(start) && this.isBeforeDay(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by hour).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by hour), otherwise FALSE.\n */\nexport function isBetweenHour(start, end) {\n return this.isAfterHour(start) && this.isBeforeHour(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by minute).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by minute), otherwise FALSE.\n */\nexport function isBetweenMinute(start, end) {\n return this.isAfterMinute(start) && this.isBeforeMinute(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by month).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by month), otherwise FALSE.\n */\nexport function isBetweenMonth(start, end) {\n return this.isAfterMonth(start) && this.isBeforeMonth(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by second).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by second), otherwise FALSE.\n */\nexport function isBetweenSecond(start, end) {\n return this.isAfterSecond(start) && this.isBeforeSecond(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by week).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by week), otherwise FALSE.\n */\nexport function isBetweenWeek(start, end) {\n return this.isAfterWeek(start) && this.isBeforeWeek(end);\n}\n\n/**\n * Determine whether this DateTime is between two other dates (comparing by year).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {Boolean} TRUE if this DateTime is between two other dates (comparing by year), otherwise FALSE.\n */\nexport function isBetweenYear(start, end) {\n return this.isAfterYear(start) && this.isBeforeYear(end);\n}\n\n/**\n * Determine whether this DateTime is the same as another date.\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date, otherwise FALSE.\n */\nexport function isSame(other) {\n return this.diff(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by day), otherwise FALSE.\n */\nexport function isSameDay(other) {\n return this.diffInDays(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by hour), otherwise FALSE.\n */\nexport function isSameHour(other) {\n return this.diffInHours(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by minute), otherwise FALSE.\n */\nexport function isSameMinute(other) {\n return this.diffInMinutes(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by month), otherwise FALSE.\n */\nexport function isSameMonth(other) {\n return this.diffInMonths(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by second), otherwise FALSE.\n */\nexport function isSameSecond(other) {\n return this.diffInSeconds(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by week), otherwise FALSE.\n */\nexport function isSameWeek(other) {\n return this.diffInWeeks(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as the other date (comparing by year), otherwise FALSE.\n */\nexport function isSameYear(other) {\n return this.diffInYears(other) === 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date.\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date, otherwise FALSE.\n */\nexport function isSameOrAfter(other) {\n return this.diff(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by day), otherwise FALSE.\n */\nexport function isSameOrAfterDay(other) {\n return this.diffInDays(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by hour), otherwise FALSE.\n */\nexport function isSameOrAfterHour(other) {\n return this.diffInHours(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by minute), otherwise FALSE.\n */\nexport function isSameOrAfterMinute(other) {\n return this.diffInMinutes(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by month), otherwise FALSE.\n */\nexport function isSameOrAfterMonth(other) {\n return this.diffInMonths(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by second), otherwise FALSE.\n */\nexport function isSameOrAfterSecond(other) {\n return this.diffInSeconds(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by week), otherwise FALSE.\n */\nexport function isSameOrAfterWeek(other) {\n return this.diffInWeeks(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or after another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or after the other date (comparing by year), otherwise FALSE.\n */\nexport function isSameOrAfterYear(other) {\n return this.diffInYears(other) >= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date.\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date, otherwise FALSE.\n */\nexport function isSameOrBefore(other) {\n return this.diff(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by day), otherwise FALSE.\n */\nexport function isSameOrBeforeDay(other) {\n return this.diffInDays(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by hour), otherwise FALSE.\n */\nexport function isSameOrBeforeHour(other) {\n return this.diffInHours(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by minute), otherwise FALSE.\n */\nexport function isSameOrBeforeMinute(other) {\n return this.diffInMinutes(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by month), otherwise FALSE.\n */\nexport function isSameOrBeforeMonth(other) {\n return this.diffInMonths(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by second), otherwise FALSE.\n */\nexport function isSameOrBeforeSecond(other) {\n return this.diffInSeconds(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by week), otherwise FALSE.\n */\nexport function isSameOrBeforeWeek(other) {\n return this.diffInWeeks(other) <= 0;\n}\n\n/**\n * Determine whether this DateTime is the same as or before another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {Boolean} TRUE if this DateTime is the same as or before the other date (comparing by year), otherwise FALSE.\n */\nexport function isSameOrBeforeYear(other) {\n return this.diffInYears(other) <= 0;\n}\n","import { daysInMonth } from './../static/utility.js';\n\n/**\n * DateTime Manipulation\n */\n\n/**\n * Add a day to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addDay() {\n return this.addDays(1);\n};\n\n/**\n * Add days to the current DateTime.\n * @param {number} amount The number of days to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addDays(amount) {\n return this.setDate(\n this.getDate() + amount,\n );\n};\n\n/**\n * Add an hour to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addHour() {\n return this.addHours(1);\n};\n\n/**\n * Add hours to the current DateTime.\n * @param {number} amount The number of hours to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addHours(amount) {\n return this.setTime(\n this.getTime() + (amount * 3600000),\n );\n};\n\n/**\n * Add a minute to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addMinute() {\n return this.addMinutes(1);\n};\n\n/**\n * Add minutes to the current DateTime.\n * @param {number} amount The number of minutes to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addMinutes(amount) {\n return this.setTime(\n this.getTime() + (amount * 60000),\n );\n};\n\n/**\n * Add a month to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addMonth() {\n return this.addMonths(1);\n};\n\n/**\n * Add months to the current DateTime.\n * @param {number} amount The number of months to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addMonths(amount) {\n return this.setMonth(\n this.getMonth() + amount,\n );\n};\n\n/**\n * Add a second to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addSecond() {\n return this.addSeconds(1);\n};\n\n/**\n * Add seconds to the current DateTime.\n * @param {number} amount The number of seconds to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addSeconds(amount) {\n return this.setTime(\n this.getTime() + (amount * 1000),\n );\n};\n\n/**\n * Add a week to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addWeek() {\n return this.addWeeks(1);\n};\n\n/**\n * Add weeks to the current DateTime.\n * @param {number} amount The number of weeks to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addWeeks(amount) {\n return this.setDate(\n this.getDate() + (amount * 7),\n );\n};\n\n/**\n * Add a year to the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function addYear() {\n return this.addYears(1);\n};\n\n/**\n * Add years to the current DateTime.\n * @param {number} amount The number of years to add.\n * @return {DateTime} The DateTime object.\n */\nexport function addYears(amount) {\n return this.setYear(\n this.getYear() + amount,\n );\n};\n\n/**\n * Set the DateTime to the end of the day.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfDay() {\n return this.setHours(23, 59, 59, 999);\n};\n\n/**\n * Set the DateTime to the end of the hour.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfHour() {\n return this.setMinutes(59, 59, 999);\n};\n\n/**\n * Set the DateTime to the end of the minute.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfMinute() {\n return this.setSeconds(59, 999);\n};\n\n/**\n * Set the DateTime to the end of the month.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfMonth() {\n return this.setDate(this.daysInMonth())\n .endOfDay();\n}\n\n/**\n * Set the DateTime to the end of the quarter.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfQuarter() {\n const month = this.getQuarter() * 3;\n return this.setMonth(month, daysInMonth(this.getYear(), month))\n .endOfDay();\n};\n\n/**\n * Set the DateTime to the end of the second.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfSecond() {\n return this.setMilliseconds(999);\n};\n\n/**\n * Set the DateTime to the end of the week.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfWeek() {\n return this.setWeekDay(7)\n .endOfDay();\n};\n\n/**\n * Set the DateTime to the end of the year.\n * @return {DateTime} The DateTime object.\n */\nexport function endOfYear() {\n return this.setMonth(12, 31)\n .endOfDay();\n};\n\n/**\n * Set the DateTime to the start of the day.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfDay() {\n return this.setHours(0, 0, 0, 0);\n};\n\n/**\n * Set the DateTime to the start of the hour.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfHour() {\n return this.setMinutes(0, 0, 0);\n};\n\n/**\n * Set the DateTime to the start of the minute.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfMinute() {\n return this.setSeconds(0, 0);\n};\n\n/**\n * Set the DateTime to the start of the month.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfMonth() {\n return this.setDate(1)\n .startOfDay();\n}\n\n/**\n * Set the DateTime to the start of the quarter.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfQuarter() {\n const month = this.getQuarter() * 3 - 2;\n return this.setMonth(month, 1)\n .startOfDay();\n};\n\n/**\n * Set the DateTime to the start of the second.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfSecond() {\n return this.setMilliseconds(0);\n};\n\n/**\n * Set the DateTime to the start of the week.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfWeek() {\n return this.setWeekDay(1)\n .startOfDay();\n};\n\n/**\n * Set the DateTime to the start of the year.\n * @return {DateTime} The DateTime object.\n */\nexport function startOfYear() {\n return this.setMonth(1, 1)\n .startOfDay();\n};\n\n/**\n * Subtract a day from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subDay() {\n return this.addDays(-1);\n};\n\n/**\n * Subtract days from the current DateTime.\n * @param {number} amount The number of days to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subDays(amount) {\n return this.addDays(-amount);\n};\n\n/**\n * Subtract an hour from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subHour() {\n return this.addHours(-1);\n};\n\n/**\n * Subtract hours from the current DateTime.\n * @param {number} amount The number of hours to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subHours(amount) {\n return this.addHours(-amount);\n};\n\n/**\n * Subtract a minute from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subMinute() {\n return this.addMinutes(-1);\n};\n\n/**\n * Subtract minutes from the current DateTime.\n * @param {number} amount The number of minutes to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subMinutes(amount) {\n return this.addMinutes(-amount);\n};\n\n/**\n * Subtract a month from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subMonth() {\n return this.addMonths(-1);\n};\n\n/**\n * Subtract months from the current DateTime.\n * @param {number} amount The number of months to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subMonths(amount) {\n return this.addMonths(-amount);\n};\n\n/**\n * Subtract a second from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subSecond() {\n return this.addSeconds(-1);\n};\n\n/**\n * Subtract seconds from the current DateTime.\n * @param {number} amount The number of seconds to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subSeconds(amount) {\n return this.addSeconds(-amount);\n};\n\n/**\n * Subtract a week from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subWeek() {\n return this.addWeeks(-1);\n};\n\n/**\n * Subtract weeks from the current DateTime.\n * @param {number} amount The number of weeks to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subWeeks(amount) {\n return this.addWeeks(-amount);\n};\n\n/**\n * Subtract a year from the current DateTime.\n * @return {DateTime} The DateTime object.\n */\nexport function subYear() {\n return this.addYears(-1);\n};\n\n/**\n * Subtract years from the current DateTime.\n * @param {number} amount The number of years to subtract.\n * @return {DateTime} The DateTime object.\n */\nexport function subYears(amount) {\n return this.addYears(-amount);\n};\n","import { formats, formatTokenRegExp } from './../vars.js';\nimport tokens from './../formatter/tokens.js';\n\n/**\n * DateTime Output\n */\n\n/**\n * Format the current date using a format string.\n * @param {string} formatString The format string.\n * @return {string} The formatted date string.\n */\nexport function format(formatString) {\n let match;\n let output = '';\n\n while (formatString && (match = formatString.match(formatTokenRegExp))) {\n const token = match[1];\n const position = match.index;\n const length = match[0].length;\n\n if (position) {\n output += formatString.substring(0, position);\n }\n\n formatString = formatString.substring(position + length);\n\n if (!token) {\n output += match[0].slice(1, -1);\n continue;\n }\n\n if (!(token in tokens)) {\n throw new Error(`Invalid token in DateTime format: ${token}`);\n }\n\n output += tokens[token].output(this, length);\n }\n\n output += formatString;\n\n return output;\n};\n\n/**\n * Format the current date using \"eee MMM dd yyyy\".\n * @return {string} The formatted date string.\n */\nexport function toDateString() {\n return this.format(formats.date);\n};\n\n/**\n * Format the current date using \"yyyy-MM-dd'THH:mm:ss.SSSSSSxxx\".\n * @return {string} The formatted date string.\n */\nexport function toISOString() {\n return this\n .setLocale('en')\n .setTimeZone('UTC')\n .format(formats.rfc3339_extended);\n};\n\n/**\n * Format the current date using \"eee MMM dd yyyy HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\nexport function toString() {\n return this.format(formats.string);\n};\n\n/**\n * Format the current date using \"HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\nexport function toTimeString() {\n return this.format(formats.time);\n};\n\n/**\n * Format the current date in UTC timeZone using \"eee MMM dd yyyy HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\nexport function toUTCString() {\n return this\n .setLocale('en')\n .setTimeZone('UTC')\n .toString();\n};\n","import DateTime from './../date-time.js';\nimport { formatDay, formatDayPeriod, formatEra, formatMonth, formatOffset, formatTimeZoneName } from './../formatter/format.js';\nimport { minimumDays } from './../formatter/utility.js';\nimport { daysInMonth as _daysInMonth, daysInYear as _daysInYear, isLeapYear as _isLeapYear } from './../static/utility.js';\n\n/**\n * DateTime Utility\n */\n\n/**\n * Get the name of the day of the week in current timeZone.\n * @param {string} [type=long] The type of day name to return.\n * @return {string} The name of the day of the week.\n */\nexport function dayName(type = 'long') {\n return formatDay(this.getLocale(), this.getDay(), type);\n};\n\n/**\n * Get the day period in current timeZone.\n * @param {string} [type=long] The type of day period to return.\n * @return {string} The day period.\n */\nexport function dayPeriod(type = 'long') {\n return formatDayPeriod(\n this.getLocale(),\n this.getHours() < 12 ?\n 0 :\n 1,\n type,\n );\n};\n\n/**\n * Get the number of days in the current month.\n * @return {number} The number of days in the current month.\n */\nexport function daysInMonth() {\n return _daysInMonth(\n this.getYear(),\n this.getMonth(),\n );\n};\n\n/**\n * Get the number of days in the current year.\n * @return {number} The number of days in the current year.\n */\nexport function daysInYear() {\n return _daysInYear(\n this.getYear(),\n );\n};\n\n/**\n * Get the era in current timeZone.\n * @param {string} [type=long] The type of era to return.\n * @return {string} The era.\n */\nexport function era(type = 'long') {\n return formatEra(\n this.getLocale(),\n this.getYear() < 0 ?\n 0 :\n 1,\n type,\n );\n};\n\n/**\n * Return true if the DateTime is in daylight savings.\n * @return {Boolean} TRUE if the current time is in daylight savings, otherwise FALSE.\n */\nexport function isDST() {\n if (!this._dynamicTz) {\n return false;\n }\n\n const year = this.getYear();\n const dateA = DateTime.fromArray([year, 1, 1], {\n timeZone: this.getTimeZone(),\n });\n const dateB = DateTime.fromArray([year, 6, 1], {\n timeZone: this.getTimeZone(),\n });\n\n return this.getTimeZoneOffset() < Math.max(dateA.getTimeZoneOffset(), dateB.getTimeZoneOffset());\n};\n\n/**\n * Return true if the year is a leap year.\n * @return {Boolean} TRUE if the current year is a leap year, otherwise FALSE.\n */\nexport function isLeapYear() {\n return _isLeapYear(\n this.getYear(),\n );\n};\n\n/**\n * Get the name of the month in current timeZone.\n * @param {string} [type=long] The type of month name to return.\n * @return {string} The name of the month.\n */\nexport function monthName(type = 'long') {\n return formatMonth(this.getLocale(), this.getMonth(), type);\n};\n\n/**\n * Get the name of the current timeZone.\n * @param {string} [type=long] The formatting type.\n * @return {string} The name of the time zone.\n */\nexport function timeZoneName(type = 'long') {\n return this._dynamicTz ?\n formatTimeZoneName(this.getLocale(), this.getTime(), this.getTimeZone(), type) :\n 'GMT' + formatOffset(this.getTimeZoneOffset(), true, type === 'short');\n};\n\n/**\n * Get the number of weeks in the current year.\n * @return {number} The number of weeks in the current year.\n */\nexport function weeksInYear() {\n const minDays = minimumDays(this.getLocale());\n return this.setMonth(12, 24 + minDays).getWeek();\n};\n","import DateTime from './date-time.js';\nimport { fromArray, fromDate, fromFormat, fromISOString, fromTimestamp, now } from './static/create.js';\nimport { dayOfYear, daysInMonth as _daysInMonth, daysInYear as _daysInYear, getDefaultLocale, getDefaultTimeZone, isLeapYear as _isLeapYear, setDateClamping, setDefaultLocale, setDefaultTimeZone } from './static/utility.js';\nimport { getDate, getDay, getDayOfYear, getHours, getMilliseconds, getMinutes, getMonth, getQuarter, getSeconds, getTimestamp, getWeek, getWeekDay, getWeekDayInMonth, getWeekOfMonth, getWeekYear, getYear } from './prototype/attributes-get.js';\nimport { setDate, setDay, setDayOfYear, setHours, setMilliseconds, setMinutes, setMonth, setQuarter, setSeconds, setTimestamp, setWeek, setWeekDay, setWeekDayInMonth, setWeekOfMonth, setWeekYear, setYear } from './prototype/attributes-set.js';\nimport { diff, diffInDays, diffInHours, diffInMinutes, diffInMonths, diffInSeconds, diffInWeeks, diffInYears, humanDiff, humanDiffInDays, humanDiffInHours, humanDiffInMinutes, humanDiffInMonths, humanDiffInSeconds, humanDiffInWeeks, humanDiffInYears, isAfter, isAfterDay, isAfterHour, isAfterMinute, isAfterMonth, isAfterSecond, isAfterWeek, isAfterYear, isBefore, isBeforeDay, isBeforeHour, isBeforeMinute, isBeforeMonth, isBeforeSecond, isBeforeWeek, isBeforeYear, isBetween, isBetweenDay, isBetweenHour, isBetweenMinute, isBetweenMonth, isBetweenSecond, isBetweenWeek, isBetweenYear, isSame, isSameDay, isSameHour, isSameMinute, isSameMonth, isSameSecond, isSameWeek, isSameYear, isSameOrAfter, isSameOrAfterDay, isSameOrAfterHour, isSameOrAfterMinute, isSameOrAfterMonth, isSameOrAfterSecond, isSameOrAfterWeek, isSameOrAfterYear, isSameOrBefore, isSameOrBeforeDay, isSameOrBeforeHour, isSameOrBeforeMinute, isSameOrBeforeMonth, isSameOrBeforeSecond, isSameOrBeforeWeek, isSameOrBeforeYear } from './prototype/comparisons.js';\nimport { addDay, addDays, addHour, addHours, addMinute, addMinutes, addMonth, addMonths, addSecond, addSeconds, addWeek, addWeeks, addYear, addYears, endOfDay, endOfHour, endOfMinute, endOfMonth, endOfQuarter, endOfSecond, endOfWeek, endOfYear, startOfDay, startOfHour, startOfMinute, startOfMonth, startOfQuarter, startOfSecond, startOfWeek, startOfYear, subDay, subDays, subHour, subHours, subMinute, subMinutes, subMonth, subMonths, subSecond, subSeconds, subWeek, subWeeks, subYear, subYears } from './prototype/manipulate.js';\nimport { format, toDateString, toISOString, toString, toTimeString, toUTCString } from './prototype/output.js';\nimport { dayName, dayPeriod, daysInMonth, daysInYear, era, isDST, isLeapYear, monthName, timeZoneName, weeksInYear } from './prototype/utility.js';\n\nDateTime.dayOfYear = dayOfYear;\nDateTime.daysInMonth = _daysInMonth;\nDateTime.daysInYear = _daysInYear;\nDateTime.fromArray = fromArray;\nDateTime.fromDate = fromDate;\nDateTime.fromFormat = fromFormat;\nDateTime.fromISOString = fromISOString;\nDateTime.fromTimestamp = fromTimestamp;\nDateTime.getDefaultLocale = getDefaultLocale;\nDateTime.getDefaultTimeZone = getDefaultTimeZone;\nDateTime.isLeapYear = _isLeapYear;\nDateTime.now = now;\nDateTime.setDateClamping = setDateClamping;\nDateTime.setDefaultLocale = setDefaultLocale;\nDateTime.setDefaultTimeZone = setDefaultTimeZone;\n\nconst proto = DateTime.prototype;\n\nproto.addDay = addDay;\nproto.addDays = addDays;\nproto.addHour = addHour;\nproto.addHours = addHours;\nproto.addMinute = addMinute;\nproto.addMinutes = addMinutes;\nproto.addMonth = addMonth;\nproto.addMonths = addMonths;\nproto.addSecond = addSecond;\nproto.addSeconds = addSeconds;\nproto.addWeek = addWeek;\nproto.addWeeks = addWeeks;\nproto.addYear = addYear;\nproto.addYears = addYears;\nproto.dayName = dayName;\nproto.dayPeriod = dayPeriod;\nproto.daysInMonth = daysInMonth;\nproto.daysInYear = daysInYear;\nproto.diff = diff;\nproto.diffInDays = diffInDays;\nproto.diffInHours = diffInHours;\nproto.diffInMinutes = diffInMinutes;\nproto.diffInMonths = diffInMonths;\nproto.diffInSeconds = diffInSeconds;\nproto.diffInWeeks = diffInWeeks;\nproto.diffInYears = diffInYears;\nproto.endOfDay = endOfDay;\nproto.endOfHour = endOfHour;\nproto.endOfMinute = endOfMinute;\nproto.endOfMonth = endOfMonth;\nproto.endOfQuarter = endOfQuarter;\nproto.endOfSecond = endOfSecond;\nproto.endOfWeek = endOfWeek;\nproto.endOfYear = endOfYear;\nproto.era = era;\nproto.format = format;\nproto.getDate = getDate;\nproto.getDay = getDay;\nproto.getDayOfYear = getDayOfYear;\nproto.getHours = getHours;\nproto.getMilliseconds = getMilliseconds;\nproto.getMinutes = getMinutes;\nproto.getMonth = getMonth;\nproto.getQuarter = getQuarter;\nproto.getSeconds = getSeconds;\nproto.getTimestamp = getTimestamp;\nproto.getWeek = getWeek;\nproto.getWeekDay = getWeekDay;\nproto.getWeekDayInMonth = getWeekDayInMonth;\nproto.getWeekOfMonth = getWeekOfMonth;\nproto.getWeekYear = getWeekYear;\nproto.getYear = getYear;\nproto.humanDiff = humanDiff;\nproto.humanDiffInDays = humanDiffInDays;\nproto.humanDiffInHours = humanDiffInHours;\nproto.humanDiffInMinutes = humanDiffInMinutes;\nproto.humanDiffInMonths = humanDiffInMonths;\nproto.humanDiffInSeconds = humanDiffInSeconds;\nproto.humanDiffInWeeks = humanDiffInWeeks;\nproto.humanDiffInYears = humanDiffInYears;\nproto.isAfter = isAfter;\nproto.isAfterDay = isAfterDay;\nproto.isAfterHour = isAfterHour;\nproto.isAfterMinute = isAfterMinute;\nproto.isAfterMonth = isAfterMonth;\nproto.isAfterSecond = isAfterSecond;\nproto.isAfterWeek = isAfterWeek;\nproto.isAfterYear = isAfterYear;\nproto.isBefore = isBefore;\nproto.isBeforeDay = isBeforeDay;\nproto.isBeforeHour = isBeforeHour;\nproto.isBeforeMinute = isBeforeMinute;\nproto.isBeforeMonth = isBeforeMonth;\nproto.isBeforeSecond = isBeforeSecond;\nproto.isBeforeWeek = isBeforeWeek;\nproto.isBeforeYear = isBeforeYear;\nproto.isBetween = isBetween;\nproto.isBetweenDay = isBetweenDay;\nproto.isBetweenHour = isBetweenHour;\nproto.isBetweenMinute = isBetweenMinute;\nproto.isBetweenMonth = isBetweenMonth;\nproto.isBetweenSecond = isBetweenSecond;\nproto.isBetweenWeek = isBetweenWeek;\nproto.isBetweenYear = isBetweenYear;\nproto.isDST = isDST;\nproto.isLeapYear = isLeapYear;\nproto.isSame = isSame;\nproto.isSameDay = isSameDay;\nproto.isSameHour = isSameHour;\nproto.isSameMinute = isSameMinute;\nproto.isSameMonth = isSameMonth;\nproto.isSameSecond = isSameSecond;\nproto.isSameWeek = isSameWeek;\nproto.isSameYear = isSameYear;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrAfterDay = isSameOrAfterDay;\nproto.isSameOrAfterHour = isSameOrAfterHour;\nproto.isSameOrAfterMinute = isSameOrAfterMinute;\nproto.isSameOrAfterMonth = isSameOrAfterMonth;\nproto.isSameOrAfterSecond = isSameOrAfterSecond;\nproto.isSameOrAfterWeek = isSameOrAfterWeek;\nproto.isSameOrAfterYear = isSameOrAfterYear;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isSameOrBeforeDay = isSameOrBeforeDay;\nproto.isSameOrBeforeHour = isSameOrBeforeHour;\nproto.isSameOrBeforeMinute = isSameOrBeforeMinute;\nproto.isSameOrBeforeMonth = isSameOrBeforeMonth;\nproto.isSameOrBeforeSecond = isSameOrBeforeSecond;\nproto.isSameOrBeforeWeek = isSameOrBeforeWeek;\nproto.isSameOrBeforeYear = isSameOrBeforeYear;\nproto.monthName = monthName;\nproto.setDate = setDate;\nproto.setDay = setDay;\nproto.setDayOfYear = setDayOfYear;\nproto.setHours = setHours;\nproto.setMilliseconds = setMilliseconds;\nproto.setMinutes = setMinutes;\nproto.setMonth = setMonth;\nproto.setQuarter = setQuarter;\nproto.setSeconds = setSeconds;\nproto.setTimestamp = setTimestamp;\nproto.setWeek = setWeek;\nproto.setWeekDay = setWeekDay;\nproto.setWeekDayInMonth = setWeekDayInMonth;\nproto.setWeekOfMonth = setWeekOfMonth;\nproto.setWeekYear = setWeekYear;\nproto.setYear = setYear;\nproto.startOfDay = startOfDay;\nproto.startOfHour = startOfHour;\nproto.startOfMinute = startOfMinute;\nproto.startOfMonth = startOfMonth;\nproto.startOfQuarter = startOfQuarter;\nproto.startOfSecond = startOfSecond;\nproto.startOfWeek = startOfWeek;\nproto.startOfYear = startOfYear;\nproto.subDay = subDay;\nproto.subDays = subDays;\nproto.subHour = subHour;\nproto.subHours = subHours;\nproto.subMinute = subMinute;\nproto.subMinutes = subMinutes;\nproto.subMonth = subMonth;\nproto.subMonths = subMonths;\nproto.subSecond = subSecond;\nproto.subSeconds = subSeconds;\nproto.subWeek = subWeek;\nproto.subWeeks = subWeeks;\nproto.subYear = subYear;\nproto.subYears = subYears;\nproto.timeZoneName = timeZoneName;\nproto.toDateString = toDateString;\nproto.toISOString = toISOString;\nproto.toString = toString;\nproto.toTimeString = toTimeString;\nproto.toUTCString = toUTCString;\nproto.weeksInYear = weeksInYear;\n\nexport default DateTime;\n"],"names":["daysInMonth","isLeapYear","daysInYear","_daysInMonth","_daysInYear","_isLeapYear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frost-datetime.js","sources":["../src/factory.js","../src/vars.js","../src/helpers.js","../src/formatter/values.js","../src/formatter/format.js","../src/formatter/locales.js","../src/formatter/locale.js","../src/formatter/utility.js","../src/formatter/parse.js","../src/formatter/tokens.js","../src/date-time.js"],"sourcesContent":["/**\n * DateTime Factory\n */\n\nconst data = new Map();\n\n/**\n * Clears all cached formatter and locale values.\n */\nexport function clearDataCache() {\n data.clear();\n};\n\n/**\n * Gets a cached value, creating it on first access.\n * @template T\n * @param {string} key The key for the values.\n * @param {() => T} callback The callback to generate the values.\n * @return {T} The cached value.\n */\nexport function getData(key, callback) {\n if (!data.has(key)) {\n data.set(key, callback());\n }\n\n return data.get(key);\n};\n\n/**\n * Creates a date formatter for a time zone.\n * @param {string} timeZone The time zone.\n * @return {Intl.DateTimeFormat} The formatter instance.\n */\nexport function getDateFormatter(timeZone) {\n return getData(\n `dateFormatter.${timeZone}`,\n () => makeFormatter('en', {\n timeZone,\n hourCycle: 'h23',\n era: 'short',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n fractionalSecondDigits: 3,\n }),\n );\n};\n\n/**\n * Creates a relative-time formatter for a locale.\n * @param {string} locale The locale.\n * @return {Intl.RelativeTimeFormat|null} The formatter instance, or null when unsupported.\n */\nexport function getRelativeFormatter(locale) {\n if (!('RelativeTimeFormat' in Intl)) {\n return null;\n }\n\n return getData(\n `relativeFormatter.${locale}`,\n () => new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto',\n style: 'long',\n }),\n );\n};\n\n/**\n * Creates a formatter for a locale.\n * @param {string} locale The locale.\n * @param {Intl.DateTimeFormatOptions} options The options for the formatter.\n * @return {Intl.DateTimeFormat} The formatter instance.\n */\nexport function makeFormatter(locale, options) {\n return new Intl.DateTimeFormat(locale, {\n timeZone: 'UTC',\n ...options,\n calendar: 'gregory',\n });\n};\n","/**\n * DateTime Variables\n */\n\nconst resolvedOptions = new Intl.DateTimeFormat().resolvedOptions();\n\nexport const config = {\n clampDates: true,\n defaultLocale: resolvedOptions.locale,\n defaultTimeZone: resolvedOptions.timeZone,\n};\n\nexport const dateStringTimeZoneRegExp = /(?:\\b(?:UTC|GMT)\\b|[T\\s]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{3})?)?(?:Z|[+-]\\d{2}(?::?\\d{2})?)\\b)/i;\n\nexport const formats = {\n date: 'eee MMM dd yyyy',\n rfc3339_extended: `yyyy-MM-dd'T'HH:mm:ss.SSSxxx`,\n string: 'eee MMM dd yyyy HH:mm:ss xx (VV)',\n time: 'HH:mm:ss xx (VV)',\n};\n\nexport const formatTokenRegExp = /([a-z])\\1*|''|'(?:[^']|'')*'/i;\n\nexport const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nexport const offsetRegExp = /^(?:GMT)?([+-])([01]\\d|2[0-3])(?:(:?)([0-5]\\d)(?:\\3([0-5]\\d))?)?$/;\n\nexport const parseOrderKeys = [\n ['year', 'weekYear'],\n ['era'],\n ['quarter', 'month', 'week', 'dayOfYear'],\n ['weekOfMonth'],\n ['date', 'weekDay'],\n ['weekDayInMonth'],\n ['hours24', 'hours12', 'dayPeriod'],\n ['minutes', 'seconds', 'milliseconds'],\n];\n\nexport const diffMethods = {\n year: 'diffInYears',\n month: 'diffInMonths',\n week: 'diffInWeeks',\n day: 'diffInDays',\n hour: 'diffInHours',\n minute: 'diffInMinutes',\n second: 'diffInSeconds',\n};\n\nexport const thresholds = {\n month: 12,\n week: null,\n day: 7,\n hour: 24,\n minute: 60,\n second: 60,\n};\n","import { getDateFormatter } from './factory.js';\nimport { diffMethods, thresholds } from './vars.js';\n\n/** @typedef {import('./date-time.js').default} DateTime */\n\n/**\n * DateTime Helpers\n */\n\n/**\n * Escapes a string for safe use inside a RegExp source.\n * @param {string} value The string to escape.\n * @return {string} The escaped string.\n */\nfunction escapeRegExp(value) {\n return value.replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&');\n}\n\n/**\n * Gets a stable day number from a DateTime's local calendar fields.\n * @param {DateTime} date The DateTime.\n * @return {number} The local calendar day number.\n */\nfunction calendarDay(date) {\n const calendarDate = new Date(0);\n calendarDate.setUTCFullYear(date.getYear(), date.getMonth() - 1, date.getDate());\n\n return calendarDate.getTime() / 86400000;\n}\n\n/**\n * Calculates the difference between two dates in a given time unit.\n * @param {DateTime} date The base DateTime.\n * @param {DateTime} other The DateTime to compare to.\n * @param {'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second'} timeUnit The time unit to compare in.\n * @param {boolean} [relative=true] Whether to use relative boundaries when calculating the difference.\n * @return {number} The difference between the dates in the given time unit.\n */\nexport function calculateDiff(date, other, timeUnit, relative = true) {\n other = other.withTimeZone(date.getTimeZone());\n\n switch (timeUnit) {\n case 'year':\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n ),\n date.getYear() - other.getYear(),\n !relative,\n -1,\n );\n case 'month':\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n date.getMonth(),\n ),\n (date.getYear() - other.getYear()) * 12 + date.getMonth() - other.getMonth(),\n !relative,\n -1,\n );\n case 'week':\n if (relative) {\n const dateWeek = date.startOfWeek();\n const otherWeek = other.withLocale(date.getLocale()).startOfWeek();\n\n return (\n calendarDay(dateWeek) -\n calendarDay(otherWeek)\n ) / 7;\n }\n\n return compensateDiff(\n date,\n other.withWeekYear(\n date.getWeekYear(),\n date.getWeek(),\n ),\n (date - other) / 604800000,\n relative,\n );\n case 'day':\n if (relative) {\n return calendarDay(date) - calendarDay(other);\n }\n\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ),\n (date - other) / 86400000,\n relative,\n );\n case 'hour':\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).withHours(\n date.getHours(),\n ),\n (date - other) / 3600000,\n relative,\n );\n case 'minute':\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).withHours(\n date.getHours(),\n date.getMinutes(),\n ),\n (date - other) / 60000,\n relative,\n );\n case 'second':\n return compensateDiff(\n date,\n other.withYear(\n date.getYear(),\n date.getMonth(),\n date.getDate(),\n ).withHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n ),\n (date - other) / 1000,\n relative,\n );\n default:\n throw new Error('Invalid time unit supplied');\n }\n};\n\n/**\n * Gets the RegExp for a list of string values.\n * Longer values are matched first to avoid prefix collisions.\n * @param {string[]} values The values to include in the RegExp.\n * @return {string} The values RegExp.\n */\nexport function valuesRegExp(values) {\n return values.slice()\n .sort((a, b) => b.length - a.length)\n .map((value) => escapeRegExp(`${value}`))\n .join('|');\n};\n\n/**\n * Compensates the difference between two dates.\n * @param {DateTime} date The DateTime.\n * @param {DateTime} other The DateTime to compare to.\n * @param {number} amount The amount to compensate.\n * @param {boolean} [compensate=true] Whether to compensate the amount.\n * @param {number} [compensation=1] The compensation offset.\n * @return {number} The compensated amount.\n */\nfunction compensateDiff(date, other, amount, compensate = true, compensation = 1) {\n if (amount > 0) {\n amount = Math.floor(amount);\n\n if (compensate && date < other) {\n amount += compensation;\n }\n } else if (amount < 0) {\n amount = Math.ceil(amount);\n\n if (compensate && date > other) {\n amount -= compensation;\n }\n }\n\n return amount;\n};\n\n/**\n * Gets the biggest difference between two dates.\n * @param {DateTime} date The DateTime.\n * @param {DateTime} [other] The DateTime to compare to.\n * @return {[number, string]} The biggest difference (amount and time unit).\n */\nexport function getBiggestDiff(date, other) {\n let lastResult;\n for (const [timeUnit, diffMethod] of Object.entries(diffMethods)) {\n const relativeDiff = date[diffMethod](other);\n\n if (lastResult && thresholds[timeUnit] && Math.abs(relativeDiff) >= thresholds[timeUnit]) {\n return lastResult;\n }\n\n const actualDiff = date[diffMethod](other, { relative: false });\n\n if (actualDiff) {\n return [relativeDiff, timeUnit];\n }\n\n if (relativeDiff) {\n lastResult = [relativeDiff, timeUnit];\n } else {\n lastResult = null;\n }\n }\n\n return lastResult ?\n lastResult :\n [0, 'second'];\n};\n\n/**\n * Gets the offset for a DateTime.\n * @param {DateTime} date The DateTime.\n * @return {number} The offset.\n */\nexport function getOffset(date) {\n const timeZone = date.getTimeZone();\n\n if (timeZone === 'UTC') {\n return 0;\n }\n\n const values = Object.fromEntries(\n getDateFormatter(timeZone)\n .formatToParts(date)\n .filter((part) => part.type !== 'literal')\n .map(({ type, value }) => [type, value]),\n );\n\n let year = parseInt(values.year, 10);\n if (values.era === 'BC') {\n year = 1 - year;\n }\n\n const localDate = new Date(0);\n localDate.setUTCFullYear(\n year,\n parseInt(values.month, 10) - 1,\n parseInt(values.day, 10),\n );\n const localTime = localDate.setUTCHours(\n parseInt(values.hour, 10),\n parseInt(values.minute, 10),\n parseInt(values.second, 10),\n parseInt(values.fractionalSecond, 10),\n );\n\n return (date.getTime() - localTime) / 60000;\n};\n\n/**\n * Gets the number of milliseconds since the UNIX epoch (offset to timeZone).\n * @param {DateTime} date The DateTime.\n * @return {number} The number of milliseconds since the UNIX epoch (offset to timeZone).\n */\nexport function getOffsetTime(date) {\n return date.getTime() - (date.getTimeZoneOffset() * 60000);\n};\n\n/**\n * Compares a literal format string with a date string.\n * @param {string} formatString The literal format string.\n * @param {string} dateString The date string.\n */\nexport function parseCompare(formatString, dateString) {\n let i = 0;\n for (const char of formatString) {\n if (char !== dateString[i]) {\n throw new Error(`Unmatched character in DateTime string: ${char}`);\n }\n\n i++;\n }\n};\n\n/**\n * Parses a supported unzoned ISO string as a neutral wall-clock timestamp.\n * @param {string} dateString The date string to parse.\n * @return {number|null} The timestamp, or null if the shape is not supported.\n */\nexport function parseLocalTimestamp(dateString) {\n const match =\n dateString.match(/^(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?$/) ||\n dateString.match(/^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d+))?)?$/);\n\n if (!match) {\n return null;\n }\n\n const [\n , year,\n month = 1,\n day = 1,\n hours = 0,\n minutes = 0,\n seconds = 0,\n fraction = '',\n ] = match;\n const date = new Date(0);\n\n date.setUTCFullYear(year, month - 1, day);\n date.setUTCHours(hours, minutes, seconds, fraction.padEnd(3, '0').substring(0, 3));\n\n return date.getTime();\n};\n\n/**\n * Generates methods for parsing a date.\n * @return {Record<string, {get: Function, set: Function}>} An object containing date parsing methods.\n */\nexport function parseFactory() {\n let isPM = false;\n let lastAM = true;\n\n return {\n date: {\n get: (datetime) => datetime.getDate(),\n set: (datetime, value) => datetime.withDate(value),\n },\n dayPeriod: {\n get: (datetime) => datetime.getHours() < 12 ? 0 : 1,\n set: (datetime, value) => {\n isPM = value;\n let hours = value ? 12 : 0;\n if (lastAM) {\n hours += datetime.getHours();\n }\n return datetime.withHours(hours);\n },\n },\n dayOfYear: {\n get: (datetime) => datetime.getDayOfYear(),\n set: (datetime, value) => datetime.withDayOfYear(value),\n },\n era: {\n get: (datetime) => datetime.getYear() < 0 ? 0 : 1,\n set: (datetime, value) => {\n const offset = value ? 1 : -1;\n return datetime.withYear(\n datetime.getYear() * offset,\n );\n },\n },\n hours12: {\n get: (datetime) => datetime.getHours() % 12,\n set: (datetime, value) => {\n if (isPM) {\n value += 12;\n }\n lastAM = true;\n return datetime.withHours(value);\n },\n },\n hours24: {\n get: (datetime) => datetime.getHours(),\n set: (datetime, value) => {\n lastAM = false;\n return datetime.withHours(value);\n },\n },\n milliseconds: {\n get: (datetime) => datetime.getMilliseconds(),\n set: (datetime, value) => datetime.withMilliseconds(value),\n },\n minutes: {\n get: (datetime) => datetime.getMinutes(),\n set: (datetime, value) => datetime.withMinutes(value),\n },\n month: {\n get: (datetime) => datetime.getMonth(),\n set: (datetime, value) => datetime.withMonth(value),\n },\n quarter: {\n get: (datetime) => datetime.getQuarter(),\n set: (datetime, value) => datetime.withQuarter(value),\n },\n seconds: {\n get: (datetime) => datetime.getSeconds(),\n set: (datetime, value) => datetime.withSeconds(value),\n },\n week: {\n get: (datetime) => datetime.getWeek(),\n set: (datetime, value) => datetime.withWeek(value),\n },\n weekDay: {\n get: (datetime) => datetime.getWeekDay(),\n set: (datetime, value) => datetime.withWeekDay(value),\n },\n weekDayInMonth: {\n get: (datetime) => datetime.getWeekDayInMonth(),\n set: (datetime, value) => datetime.withWeekDayInMonth(value),\n },\n weekOfMonth: {\n get: (datetime) => datetime.getWeekOfMonth(),\n set: (datetime, value) => datetime.withWeekOfMonth(value),\n },\n weekYear: {\n get: (datetime) => datetime.getWeekYear(),\n set: (datetime, value) => datetime.withWeekYear(value),\n },\n year: {\n get: (datetime) => {\n const year = datetime.getYear();\n return Math.abs(year);\n },\n set: (datetime, value) => datetime.withYear(value),\n },\n };\n};\n\n/**\n * Sets the number of milliseconds since the UNIX epoch (offset to timeZone).\n * @param {DateTime} date The DateTime.\n * @param {number} time The number of milliseconds since the UNIX epoch (offset to timeZone).\n * @param {number} [direction=1] The direction to resolve a gap.\n * @return {DateTime} A new DateTime instance.\n */\nexport function setOffsetTime(date, time, direction = 1) {\n const newDate = date.withTime(\n time + (date.getTimeZoneOffset() * 60000),\n );\n const newOffsetTime = getOffsetTime(newDate);\n\n if (newOffsetTime === time) {\n return newDate;\n }\n\n const adjustedDate = date.withTime(\n time + (newDate.getTimeZoneOffset() * 60000),\n );\n const adjustedOffsetTime = getOffsetTime(adjustedDate);\n\n if (adjustedOffsetTime === time) {\n return adjustedDate;\n }\n\n if (direction < 0) {\n return newOffsetTime < adjustedOffsetTime ?\n newDate :\n adjustedDate;\n }\n\n return newOffsetTime > adjustedOffsetTime ?\n newDate :\n adjustedDate;\n};\n","import { getData, makeFormatter } from './../factory.js';\nimport { valuesRegExp } from './../helpers.js';\n\n/**\n * Formatter value caches.\n */\n\n/**\n * Gets cached localized day-period labels.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @return {string[]} The localized day-period labels.\n */\nexport function getDayPeriods(locale, type = 'long') {\n return getData(\n `periods.${locale}.${type}`,\n () => {\n const dayPeriodFormatter = makeFormatter(locale, { hour: 'numeric', hourCycle: 'h11' });\n return new Array(2)\n .fill()\n .map((_, index) =>\n dayPeriodFormatter.formatToParts(Date.UTC(2018, 0, 1, index * 12))\n .find((part) => part.type === 'dayPeriod')\n .value,\n );\n },\n );\n};\n\n/**\n * Gets cached localized weekday labels.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the values are standalone.\n * @return {string[]} The localized weekday labels.\n */\nexport function getDays(locale, type = 'long', standalone = true) {\n return getData(\n `days.${locale}.${type}.${standalone}`,\n () => {\n if (standalone) {\n const dayFormatter = makeFormatter(locale, { weekday: type });\n return new Array(7)\n .fill()\n .map((_, index) =>\n dayFormatter.format(Date.UTC(2018, 0, index)),\n );\n }\n\n const dayFormatter = makeFormatter(locale, { year: 'numeric', month: 'numeric', day: 'numeric', weekday: type });\n return new Array(7)\n .fill()\n .map((_, index) =>\n dayFormatter.formatToParts(Date.UTC(2018, 0, index))\n .find((part) => part.type === 'weekday')\n .value,\n );\n },\n );\n};\n\n/**\n * Gets cached localized era labels.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @return {string[]} The localized era labels.\n */\nexport function getEras(locale, type = 'long') {\n return getData(\n `eras.${locale}.${type}`,\n () => {\n const eraFormatter = makeFormatter(locale, { era: type });\n return new Array(2)\n .fill()\n .map((_, index) =>\n eraFormatter.formatToParts(Date.UTC(index - 1, 0, 1))\n .find((part) => part.type === 'era')\n .value,\n );\n },\n );\n};\n\n/**\n * Gets cached localized month labels.\n * @param {string} locale The locale.\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the values are standalone.\n * @return {string[]} The localized month labels.\n */\nexport function getMonths(locale, type = 'long', standalone = true) {\n return getData(\n `months.${locale}.${type}.${standalone}`,\n () => {\n if (standalone) {\n const monthFormatter = makeFormatter(locale, { month: type });\n return new Array(12)\n .fill()\n .map((_, index) =>\n monthFormatter.format(Date.UTC(2018, index, 1)),\n );\n }\n\n const monthFormatter = makeFormatter(locale, { year: 'numeric', month: type, day: 'numeric' });\n return new Array(12)\n .fill()\n .map((_, index) =>\n monthFormatter.formatToParts(Date.UTC(2018, index, 1))\n .find((part) => part.type === 'month')\n .value,\n );\n },\n );\n};\n\n/**\n * Gets cached localized digit glyphs.\n * @param {string} locale The locale.\n * @return {string[]} The localized digit glyphs.\n */\nexport function getNumbers(locale) {\n return getData(\n `numbers.${locale}`,\n () => {\n const numberFormatter = makeFormatter(locale, { minute: 'numeric' });\n return new Array(10)\n .fill()\n .map((_, index) =>\n numberFormatter.format(Date.UTC(2018, 0, 1, 0, index)),\n );\n },\n );\n};\n\n/**\n * Gets the RegExp for the number values.\n * @param {string} locale The locale.\n * @param {number|null} [length=null] The exact number of digits to match.\n * @return {string} The number values RegExp.\n */\nexport function numberRegExp(locale, length = null) {\n const quantifier = length === null ?\n '+' :\n `{${length}}`;\n return `(?:${valuesRegExp(getNumbers(locale))})${quantifier}`;\n};\n","import { getRelativeFormatter, makeFormatter } from './../factory.js';\nimport { getDayPeriods, getDays, getEras, getMonths, getNumbers } from './values.js';\n\n/**\n * Formats a day as a locale string.\n * @param {string} locale The locale.\n * @param {number} day The day to format (0-6).\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the value is standalone.\n * @return {string} The formatted string.\n */\nexport function formatDay(locale, day, type = 'long', standalone = true) {\n return getDays(locale, type, standalone)[day];\n};\n\n/**\n * Formats a day period as a locale string.\n * @param {string} locale The locale.\n * @param {number} period The day-period index to format. (0-1)\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatDayPeriod(locale, period, type = 'long') {\n return getDayPeriods(locale, type)[period];\n};\n\n/**\n * Formats an era as a locale string.\n * @param {string} locale The locale.\n * @param {number} era The era index to format. (0-1)\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatEra(locale, era, type = 'long') {\n return getEras(locale, type)[era];\n};\n\n/**\n * Formats a month as a locale string.\n * @param {string} locale The locale.\n * @param {number} month The month to format (1-12).\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the value is standalone.\n * @return {string} The formatted string.\n */\nexport function formatMonth(locale, month, type = 'long', standalone = true) {\n return getMonths(locale, type, standalone)[month - 1];\n};\n\n/**\n * Formats a number as a locale number string.\n * @param {string} locale The locale.\n * @param {number} number The number to format.\n * @param {number} [padding=0] The amount of padding to use.\n * @return {string} The formatted string.\n */\nexport function formatNumber(locale, number, padding = 0) {\n const numbers = getNumbers(locale);\n return `${number}`\n .padStart(padding, '0')\n .replace(/\\d/g, (match) => numbers[match]);\n};\n\n/**\n * Formats a number to an offset string.\n * @param {number} offset The offset to format.\n * @param {boolean} [useColon=true] Whether to use a colon separator.\n * @param {boolean} [optionalMinutes=false] Whether minutes are optional.\n * @param {boolean} [includeSeconds=true] Whether seconds are included.\n * @return {string} The formatted offset string.\n */\nexport function formatOffset(offset, useColon = true, optionalMinutes = false, includeSeconds = true) {\n const absoluteSeconds = Math.abs(offset * 60);\n const totalSeconds = Math.round(absoluteSeconds);\n const precision = Number.EPSILON * Math.max(1, absoluteSeconds);\n const roundingError = Math.abs(absoluteSeconds - totalSeconds);\n if (!Number.isFinite(absoluteSeconds) || roundingError > precision || totalSeconds >= 86400) {\n throw new Error('Invalid time zone offset supplied');\n }\n\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor(totalSeconds % 3600 / 60);\n const seconds = totalSeconds % 60;\n const sign = offset > 0 ?\n '-' :\n '+';\n const parts = [`${hours}`.padStart(2, '0')];\n\n if (!optionalMinutes || minutes || seconds) {\n parts.push(`${minutes}`.padStart(2, '0'));\n }\n\n if (includeSeconds && seconds) {\n parts.push(`${seconds}`.padStart(2, '0'));\n }\n\n return sign + parts.join(useColon ? ':' : '');\n};\n\n/**\n * Formats a relative duration as a locale string.\n * @param {string} locale The locale.\n * @param {number} amount The amount of duration.\n * @param {string} unit The time unit.\n * @return {string} The relative duration.\n */\nexport function formatRelative(locale, amount, unit) {\n const relativeFormatter = getRelativeFormatter(locale);\n\n if (!relativeFormatter) {\n throw new Error('RelativeTimeFormat not supported');\n }\n\n return relativeFormatter.format(amount, unit);\n};\n\n/**\n * Formats a time zone as a locale string.\n * @param {string} locale The locale.\n * @param {number} timestamp The timestamp to use.\n * @param {string} timeZone The time zone to format.\n * @param {string} [type=long] The formatting type.\n * @return {string} The formatted string.\n */\nexport function formatTimeZoneName(locale, timestamp, timeZone, type = 'long') {\n return makeFormatter(locale, { second: 'numeric', timeZone, timeZoneName: type })\n .formatToParts(timestamp)\n .find((part) => part.type === 'timeZoneName')\n .value;\n};\n","export const weekStart = { '1': ['af', 'am', 'ar-il', 'ar-sa', 'ar-ye', 'as', 'bn', 'bo', 'brx', 'ccp', 'ceb', 'chr', 'dav', 'doi', 'dz', 'ebu', 'en', 'es-br', 'es-bz', 'es-co', 'es-do', 'es-gt', 'es-hn', 'es-mx', 'es-ni', 'es-pa', 'es-pe', 'es-ph', 'es-pr', 'es-py', 'es-sv', 'es-us', 'es-ve', 'fil', 'fr-ca', 'gu', 'guz', 'haw', 'he', 'hi', 'id', 'ii', 'ja', 'jv', 'kam', 'ki', 'kln', 'km', 'kn', 'ko', 'kok', 'ks', 'lkt', 'lo', 'luo', 'luy', 'mai', 'mas', 'mer', 'mgh', 'ml', 'mni', 'mr', 'ms-id', 'ms-sg', 'mt', 'my', 'nd', 'ne', 'om', 'or', 'pa', 'ps-pk', 'pt', 'qu', 'sa', 'saq', 'sat', 'sd', 'seh', 'sn', 'so-et', 'so-ke', 'su', 'sw-ke', 'ta', 'te', 'teo-ke', 'th', 'ti', 'ug', 'ur', 'xh', 'yue', 'zh', 'zu'], '2': ['af-na', 'ar-001', 'ar-eh', 'ar-er', 'ar-km', 'ar-lb', 'ar-ma', 'ar-mr', 'ar-ps', 'ar-so', 'ar-ss', 'ar-td', 'ar-tn', 'en-001', 'en-150', 'en-ai', 'en-at', 'en-au', 'en-bb', 'en-be', 'en-bi', 'en-bm', 'en-cc', 'en-ch', 'en-ck', 'en-cm', 'en-cx', 'en-cy', 'en-de', 'en-dg', 'en-dk', 'en-er', 'en-fi', 'en-fj', 'en-fk', 'en-fm', 'en-gb', 'en-gd', 'en-gg', 'en-gh', 'en-gi', 'en-gm', 'en-gy', 'en-ie', 'en-im', 'en-io', 'en-je', 'en-ki', 'en-kn', 'en-ky', 'en-lc', 'en-lr', 'en-ls', 'en-mg', 'en-mp', 'en-ms', 'en-mu', 'en-mw', 'en-my', 'en-na', 'en-nf', 'en-ng', 'en-nl', 'en-nr', 'en-nu', 'en-nz', 'en-pg', 'en-pn', 'en-pw', 'en-rw', 'en-sb', 'en-sc', 'en-se', 'en-sh', 'en-si', 'en-sl', 'en-ss', 'en-sx', 'en-sz', 'en-tc', 'en-tk', 'en-to', 'en-tv', 'en-tz', 'en-ug', 'en-vc', 'en-vg', 'en-vu', 'en-zm', 'ko-kp', 'mas-tz', 'pt-ao', 'pt-ch', 'pt-cv', 'pt-gq', 'pt-gw', 'pt-lu', 'pt-st', 'pt-tl', 'qu-bo', 'qu-ec', 'ta-lk', 'ta-my', 'ti-er'], '7': ['ar', 'ckb', 'en-ae', 'en-sd', 'fa', 'fr-dj', 'fr-dz', 'fr-sy', 'kab', 'lrc', 'mzn', 'ps', 'so-dj', 'uz-arab', 'uz-arab-af'] };\nexport const minDaysInFirstWeek = { '4': ['ast', 'bg', 'br', 'ca', 'ce', 'cs', 'cy', 'da', 'de', 'dsb', 'el', 'en-at', 'en-be', 'en-ch', 'en-de', 'en-dk', 'en-fi', 'en-fj', 'en-gb', 'en-gg', 'en-gi', 'en-ie', 'en-im', 'en-je', 'en-nl', 'en-se', 'es', 'et', 'eu', 'fi', 'fo', 'fr', 'fur', 'fy', 'ga', 'gd', 'gl', 'gsw', 'gv', 'hsb', 'hu', 'is', 'it', 'ksh', 'kw', 'lb', 'lt', 'nb', 'nl', 'nn', 'no', 'os-ru', 'pl', 'pt-ch', 'pt-lu', 'pt-pt', 'rm', 'ru', 'sah', 'sc', 'se', 'sk', 'smn', 'sv', 'tt', 'wae'], '1': ['da-gl', 'el-cy', 'es-419', 'es-ar', 'es-bo', 'es-br', 'es-bz', 'es-cl', 'es-co', 'es-cr', 'es-cu', 'es-do', 'es-ea', 'es-ec', 'es-gq', 'es-gt', 'es-hn', 'es-ic', 'es-mx', 'es-ni', 'es-pa', 'es-pe', 'es-ph', 'es-pr', 'es-py', 'es-sv', 'es-us', 'es-uy', 'es-ve', 'fr-bf', 'fr-bi', 'fr-bj', 'fr-bl', 'fr-ca', 'fr-cd', 'fr-cf', 'fr-cg', 'fr-ci', 'fr-cm', 'fr-dj', 'fr-dz', 'fr-ga', 'fr-gn', 'fr-gq', 'fr-ht', 'fr-km', 'fr-ma', 'fr-mf', 'fr-mg', 'fr-ml', 'fr-mr', 'fr-mu', 'fr-nc', 'fr-ne', 'fr-pf', 'fr-pm', 'fr-rw', 'fr-sc', 'fr-sn', 'fr-sy', 'fr-td', 'fr-tg', 'fr-tn', 'fr-vu', 'fr-wf', 'fr-yt', 'nl-aw', 'nl-bq', 'nl-cw', 'nl-sr', 'nl-sx', 'ru-by', 'ru-kg', 'ru-kz', 'ru-md', 'ru-ua'] };\n","import { getData } from './../factory.js';\nimport { minDaysInFirstWeek, weekStart } from './locales.js';\n\n/**\n * Gets a locale value from generated data.\n * @param {object} data The generated locale data.\n * @param {string[]} candidates The locale candidates.\n * @param {number} fallback The fallback value.\n * @return {number} The locale value.\n */\nfunction generatedValue(data, candidates, fallback) {\n for (const candidate of candidates) {\n for (const [value, valueLocales] of Object.entries(data)) {\n if (valueLocales.includes(candidate)) {\n return parseInt(value, 10);\n }\n }\n }\n\n return fallback;\n}\n\n/**\n * Gets generated-data candidates for a locale.\n * @param {Intl.Locale} locale The locale.\n * @return {string[]} The locale candidates.\n */\nfunction localeCandidates(locale) {\n const localeName = locale.toString().split('-x-', 1)[0];\n const regionOverride = localeName.match(\n /-u-(?:[a-z0-9]{2,8}-)*rg-([a-z]{2}|\\d{3})zzzz(?:-|$)/i,\n );\n const region = regionOverride?.[1] || locale.region;\n\n return [\n [locale.language, locale.script, region],\n [locale.language, region],\n [locale.language, locale.script],\n [locale.language],\n ].map((parts) =>\n parts\n .filter((part) => !!part)\n .join('-')\n .toLowerCase(),\n );\n}\n\n/**\n * Gets week information for a locale.\n * @param {string} locale The locale.\n * @return {{firstDay: number, minimalDays: number}} The week information.\n */\nexport function getWeekInfo(locale) {\n return getData(\n `weekInfo.${locale}`,\n () => {\n const localeData = new Intl.Locale(locale);\n const runtimeInfo = localeData.getWeekInfo?.() || localeData.weekInfo || {};\n\n let { firstDay = null, minimalDays = null } = runtimeInfo;\n\n const candidates = firstDay && minimalDays ?\n [] :\n localeCandidates(localeData);\n\n if (!firstDay) {\n const phpFirstDay = generatedValue(weekStart, candidates, 2);\n\n // IntlCalendar numbers Sunday as 1; Intl.Locale numbers it as 7.\n firstDay = phpFirstDay === 1 ? 7 : phpFirstDay - 1;\n }\n\n if (!minimalDays) {\n minimalDays = generatedValue(minDaysInFirstWeek, candidates, 1);\n }\n\n return { firstDay, minimalDays };\n },\n );\n};\n","import { getWeekInfo } from './locale.js';\nimport { numberRegExp } from './values.js';\n\n/**\n * Decodes a quoted ICU format literal.\n * @param {string} literal The literal to decode.\n * @return {string} The decoded literal.\n */\nexport function decodeLiteral(literal) {\n return literal === `''` ?\n `'` :\n literal.slice(1, -1).replace(/''/g, `'`);\n};\n\n/**\n * Gets the formatting type from the component token length.\n * @param {number} length The component token length.\n * @return {string} The formatting type.\n */\nexport function getType(length) {\n switch (length) {\n case 5:\n return 'narrow';\n case 4:\n return 'long';\n default:\n return 'short';\n }\n};\n\n/**\n * Gets the parsing RegExp data for a format token.\n * @param {string} source The token RegExp.\n * @param {string|null} nextSource The next token RegExp.\n * @param {number} length The token length.\n * @param {string} locale The parsing locale.\n * @param {boolean} previousNumeric Whether the previous token was an adjacent numeric token.\n * @return {{numeric: boolean, source: string}} The token RegExp data.\n */\nexport function getTokenRegExp(source, nextSource, length, locale, previousNumeric) {\n const numberSource = numberRegExp(locale);\n let numeric = true;\n\n if (source !== numberSource) {\n numeric = false;\n } else if (previousNumeric || nextSource === numberSource) {\n source = numberRegExp(locale, length);\n }\n\n return { numeric, source };\n};\n\n/**\n * Gets the locale's minimum days in the first week of the year.\n * @param {string} locale The locale.\n * @return {number} The minimum day count.\n */\nexport function minimumDays(locale) {\n return getWeekInfo(locale).minimalDays;\n};\n\n/**\n * Converts a Sunday-based day-of-week value to the locale's week numbering.\n * @param {string} locale The locale.\n * @param {number} day The day of the week. (0 = Sunday, 6 = Saturday)\n * @return {number} The local day of the week.\n */\nexport function weekDay(locale, day) {\n return (7 + parseInt(day, 10) - (getWeekInfo(locale).firstDay % 7)) % 7 + 1;\n};\n","import { weekDay } from './utility.js';\nimport { getDayPeriods, getDays, getEras, getMonths, getNumbers } from './values.js';\n\n/**\n * Parses a day from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the value is standalone.\n * @return {number} The local day of the week (1-7).\n */\nexport function parseDay(locale, value, type = 'long', standalone = true) {\n const day = getDays(locale, type, standalone).indexOf(value);\n if (day === -1) {\n throw new Error(`Unmatched day string in DateTime string: ${value}`);\n }\n return weekDay(locale, day);\n};\n\n/**\n * Parses a day period from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @return {number} The day period (0-1).\n */\nexport function parseDayPeriod(locale, value, type = 'long') {\n return getDayPeriods(locale, type).indexOf(value);\n};\n\n/**\n * Parses an era from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @return {number} The era (0-1).\n */\nexport function parseEra(locale, value, type = 'long') {\n return getEras(locale, type).indexOf(value);\n};\n\n/**\n * Parses a month from a locale string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @param {string} [type=long] The formatting type.\n * @param {boolean} [standalone=true] Whether the value is standalone.\n * @return {number} The month number (1-12).\n */\nexport function parseMonth(locale, value, type = 'long', standalone = true) {\n return getMonths(locale, type, standalone).indexOf(value) + 1;\n};\n\n/**\n * Parses locale digits into an ASCII digit string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @return {string} The parsed ASCII digit string.\n */\nexport function parseNumberString(locale, value) {\n const numbers = getNumbers(locale);\n return Array.from(value, (digit) => numbers.indexOf(digit)).join('');\n};\n\n/**\n * Parses a number from a locale number string.\n * @param {string} locale The locale.\n * @param {string} value The value to parse.\n * @return {number} The parsed number.\n */\nexport function parseNumber(locale, value) {\n return parseInt(\n parseNumberString(locale, value),\n 10,\n );\n};\n","import { valuesRegExp } from './../helpers.js';\nimport { formatDay, formatMonth, formatNumber, formatOffset } from './format.js';\nimport { parseDay, parseDayPeriod, parseEra, parseMonth, parseNumber, parseNumberString } from './parse.js';\nimport { getType } from './utility.js';\nimport { getDayPeriods, getDays, getEras, getMonths, numberRegExp } from './values.js';\n\n/**\n * DateFormatter Format Data\n */\n\nexport default {\n\n /* ERA */\n\n G: {\n key: 'era',\n regex: (locale, length) => {\n const type = getType(length);\n return valuesRegExp(getEras(locale, type));\n },\n input: (locale, value, length) => {\n const type = getType(length);\n return parseEra(locale, value, type);\n },\n output: (datetime, length) => {\n const type = getType(length);\n return datetime.era(type);\n },\n },\n\n /* YEAR */\n\n // year\n y: {\n key: 'year',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value, length) => {\n value = parseNumber(locale, value);\n\n if (length !== 2 || `${value}`.length !== 2) {\n return value;\n }\n\n return value > 40 ?\n 1900 + value :\n 2000 + value;\n },\n output: (datetime, length) => {\n let year = datetime.getYear();\n if (length === 2) {\n year = `${year}`.slice(-2);\n }\n return formatNumber(\n datetime.getLocale(),\n Math.abs(year),\n length,\n );\n },\n },\n\n // week year\n Y: {\n key: 'weekYear',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value, length) => {\n value = parseNumber(locale, value);\n\n if (length !== 2 || `${value}`.length !== 2) {\n return value;\n }\n\n return value > 40 ?\n 1900 + value :\n 2000 + value;\n },\n output: (datetime, length) => {\n let year = datetime.getWeekYear();\n if (length === 2) {\n year = `${year}`.slice(-2);\n }\n return formatNumber(\n datetime.getLocale(),\n Math.abs(year),\n length,\n );\n },\n },\n\n /* QUARTER */\n\n // quarter\n Q: {\n key: 'quarter',\n supportsLength: (length) => length !== 3 && length !== 4,\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getQuarter(),\n length < 3 ? length : 0,\n ),\n },\n\n // quarter (standalone)\n q: {\n key: 'quarter',\n supportsLength: (length) => length !== 3 && length !== 4,\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getQuarter(),\n length < 3 ? length : 0,\n ),\n },\n\n /* MONTH */\n\n // month\n M: {\n key: 'month',\n supportsLength: (length, parsing) => !parsing || length !== 5,\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3: {\n const type = getType(length);\n return valuesRegExp(getMonths(locale, type, false));\n }\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 4:\n case 3: {\n const type = getType(length);\n return parseMonth(locale, value, type, false);\n }\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n const month = datetime.getMonth();\n switch (length) {\n case 5:\n case 4:\n case 3: {\n const type = getType(length);\n return formatMonth(locale, month, type, false);\n }\n default:\n return formatNumber(locale, month, length);\n }\n },\n },\n\n // month (standalone)\n L: {\n key: 'month',\n supportsLength: (length, parsing) => !parsing || length !== 5,\n regex: (locale, length) => {\n switch (length) {\n case 5:\n case 4:\n case 3: {\n const type = getType(length);\n return valuesRegExp(getMonths(locale, type));\n }\n default:\n return numberRegExp(locale);\n }\n },\n input: (locale, value, length) => {\n switch (length) {\n case 4:\n case 3: {\n const type = getType(length);\n return parseMonth(locale, value, type);\n }\n default:\n return parseNumber(locale, value);\n }\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n const month = datetime.getMonth();\n switch (length) {\n case 5:\n case 4:\n case 3: {\n const type = getType(length);\n return formatMonth(locale, month, type);\n }\n default:\n return formatNumber(locale, month, length);\n }\n },\n },\n\n /* WEEK */\n\n // local week\n w: {\n key: 'week',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeek(),\n length,\n ),\n },\n\n // local week of month\n W: {\n key: 'weekOfMonth',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeekOfMonth(),\n length,\n ),\n },\n\n /* DAY */\n\n // day of month\n d: {\n key: 'date',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getDate(),\n length,\n ),\n },\n\n // day of year\n D: {\n key: 'dayOfYear',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getDayOfYear(),\n length,\n ),\n },\n\n // day of week in month\n F: {\n key: 'weekDayInMonth',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getWeekDayInMonth(),\n length,\n ),\n },\n\n // week day name\n E: {\n key: 'weekDay',\n supportsLength: (length, parsing) =>\n length !== 6 && (!parsing || length !== 5),\n regex: (locale, length) => {\n const type = getType(length);\n return valuesRegExp(getDays(locale, type, false));\n },\n input: (locale, value, length) => {\n const type = getType(length);\n return parseDay(locale, value, type, false);\n },\n output: (datetime, length) => {\n const type = getType(length);\n const locale = datetime.getLocale();\n const day = datetime.getDay();\n return formatDay(locale, day, type, false);\n },\n },\n\n // week day\n e: {\n key: 'weekDay',\n supportsLength: (length, parsing) =>\n length !== 6 && (!parsing || length !== 5),\n regex: (locale, length) => {\n if (length < 3) {\n return numberRegExp(locale);\n }\n\n const type = getType(length);\n return valuesRegExp(getDays(locale, type, false));\n },\n input: (locale, value, length) => {\n if (length < 3) {\n return parseNumber(locale, value);\n }\n\n const type = getType(length);\n return parseDay(locale, value, type, false);\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n if (length < 3) {\n return formatNumber(locale, datetime.getWeekDay(), length);\n }\n\n const type = getType(length);\n return formatDay(locale, datetime.getDay(), type, false);\n },\n },\n\n // week day (standalone)\n c: {\n key: 'weekDay',\n supportsLength: (length, parsing) =>\n length !== 6 && (!parsing || length !== 5),\n regex: (locale, length) => {\n if (length < 3) {\n return numberRegExp(locale);\n }\n\n const type = getType(length);\n return valuesRegExp(getDays(locale, type));\n },\n input: (locale, value, length) => {\n if (length < 3) {\n return parseNumber(locale, value);\n }\n\n const type = getType(length);\n return parseDay(locale, value, type);\n },\n output: (datetime, length) => {\n const locale = datetime.getLocale();\n if (length < 3) {\n return formatNumber(locale, datetime.getWeekDay());\n }\n\n const type = getType(length);\n return formatDay(locale, datetime.getDay(), type);\n },\n },\n\n /* PERIOD */\n\n a: {\n key: 'dayPeriod',\n supportsLength: (length) => length <= 4,\n regex: (locale, length) => {\n const type = getType(length);\n return valuesRegExp(getDayPeriods(locale, type));\n },\n input: (locale, value, length) => {\n const type = getType(length);\n return parseDayPeriod(locale, value, type);\n },\n output: (datetime, length) => {\n const type = getType(length);\n return datetime.dayPeriod(type);\n },\n },\n\n /* HOUR */\n\n h: {\n key: 'hours12',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => {\n value = parseNumber(locale, value);\n if (value === 12) {\n value = 0;\n }\n return value;\n },\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() % 12 || 12,\n length,\n ),\n },\n\n H: {\n key: 'hours24',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours(),\n length,\n ),\n },\n\n K: {\n key: 'hours12',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() % 12,\n length,\n ),\n },\n\n k: {\n key: 'hours24',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => {\n value = parseNumber(locale, value);\n if (value === 24) {\n value = 0;\n }\n return value;\n },\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getHours() || 24,\n length,\n ),\n },\n\n /* MINUTE */\n\n m: {\n key: 'minutes',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getMinutes(),\n length,\n ),\n },\n\n /* SECOND */\n\n s: {\n key: 'seconds',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) => parseNumber(locale, value),\n output: (datetime, length) =>\n formatNumber(\n datetime.getLocale(),\n datetime.getSeconds(),\n length,\n ),\n },\n\n /* FRACTIONAL */\n\n S: {\n key: 'milliseconds',\n regex: (locale) => numberRegExp(locale),\n input: (locale, value) =>\n parseInt(\n parseNumberString(locale, value)\n .padEnd(3, '0')\n .slice(0, 3),\n 10,\n ),\n output: (datetime, length) => {\n const milliseconds = `${datetime.getMilliseconds()}`.padStart(3, '0');\n return formatNumber(\n datetime.getLocale(),\n milliseconds.padEnd(length, '0').slice(0, length),\n );\n },\n },\n\n /* TIMEZONE/OFFSET */\n\n z: {\n supportsLength: (_, parsing) => !parsing,\n output: (datetime, length) => {\n const type = getType(Math.min(length, 4));\n return datetime.timeZoneName(type);\n },\n },\n\n Z: {\n key: 'timeZone',\n regex: (_, length) => {\n if (length === 5) {\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}(?:\\\\:\\\\d{2})?|Z`;\n }\n\n return length >= 4 ?\n `GMT[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|GMT` :\n `[\\\\+\\\\-]\\\\d{4}`;\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n\n let useColon = true;\n let prefix = '';\n if (length === 5) {\n if (!offset) {\n return 'Z';\n }\n } else if (length >= 4) {\n prefix = 'GMT';\n\n if (!offset) {\n return prefix;\n }\n } else {\n useColon = false;\n }\n\n return prefix + formatOffset(offset, useColon, false, length === 5);\n },\n },\n\n O: {\n key: 'timeZone',\n supportsLength: (length) => length === 1 || length === 4,\n regex: (_, length) => {\n switch (length) {\n case 4:\n return `GMT[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|GMT`;\n default:\n return `GMT[\\\\+\\\\-]\\\\d{2}|GMT`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n const prefix = 'GMT';\n\n if (!offset) {\n return prefix;\n }\n\n let optionalMinutes = false;\n switch (length) {\n case 4:\n break;\n default:\n optionalMinutes = true;\n }\n\n return prefix + formatOffset(offset, true, optionalMinutes);\n },\n },\n\n V: {\n key: 'timeZone',\n supportsLength: (length) => length === 2,\n regex: (_) => '([A-Za-z0-9_.+\\\\-/]+)',\n input: (_, value) => value,\n output: (datetime) => datetime.getTimeZone(),\n },\n\n X: {\n key: 'timeZone',\n supportsLength: (length) => length <= 5,\n regex: (_, length) => {\n switch (length) {\n case 5:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}(?:\\\\:\\\\d{2})?|Z`;\n case 4:\n return `[\\\\+\\\\-]\\\\d{4}(?:\\\\d{2})?|Z`;\n case 3:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}|Z`;\n case 2:\n return `[\\\\+\\\\-]\\\\d{4}|Z`;\n default:\n return `[\\\\+\\\\-]\\\\d{2}(?:\\\\d{2})?|Z`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n const offset = datetime.getTimeZoneOffset();\n\n if (!offset) {\n return 'Z';\n }\n\n let useColon;\n switch (length) {\n case 5:\n case 3:\n useColon = true;\n break;\n default:\n useColon = false;\n break;\n }\n\n return formatOffset(offset, useColon, length === 1, length >= 4);\n },\n },\n\n x: {\n key: 'timeZone',\n supportsLength: (length) => length <= 5,\n regex: (_, length) => {\n switch (length) {\n case 5:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}(?:\\\\:\\\\d{2})?`;\n case 4:\n return `[\\\\+\\\\-]\\\\d{4}(?:\\\\d{2})?`;\n case 3:\n return `[\\\\+\\\\-]\\\\d{2}\\\\:\\\\d{2}`;\n case 2:\n return `[\\\\+\\\\-]\\\\d{4}`;\n default:\n return `[\\\\+\\\\-]\\\\d{2}(?:\\\\d{2})?`;\n }\n },\n input: (_, value) => value,\n output: (datetime, length) => {\n let useColon;\n switch (length) {\n case 5:\n case 3:\n useColon = true;\n break;\n default:\n useColon = false;\n break;\n }\n\n return formatOffset(datetime.getTimeZoneOffset(), useColon, length === 1, length >= 4);\n },\n },\n\n};\n","import { clearDataCache as clearFactoryDataCache } from './factory.js';\nimport {\n formatDay,\n formatDayPeriod,\n formatEra,\n formatMonth,\n formatOffset,\n formatRelative,\n formatTimeZoneName,\n} from './formatter/format.js';\nimport tokens from './formatter/tokens.js';\nimport { decodeLiteral, getTokenRegExp, minimumDays, weekDay } from './formatter/utility.js';\nimport {\n calculateDiff,\n getBiggestDiff,\n getOffset,\n getOffsetTime,\n parseCompare,\n parseFactory,\n parseLocalTimestamp,\n setOffsetTime,\n} from './helpers.js';\nimport {\n config,\n dateStringTimeZoneRegExp,\n formats,\n formatTokenRegExp,\n monthDays,\n offsetRegExp,\n parseOrderKeys,\n} from './vars.js';\n\n/**\n * @typedef {{timeZone?: string, locale?: string}} DateTimeOptions\n */\n\n/**\n * An immutable date and time object with locale-aware formatting and time-zone support.\n */\nexport default class DateTime {\n /**\n * Clears cached formatter and locale data.\n */\n static clearDataCache() {\n clearFactoryDataCache();\n }\n\n /**\n * Gets the day of the year for a year, month and date.\n * @param {number} year The year.\n * @param {number} month The month. (1-12)\n * @param {number} date The date.\n * @return {number} The day of the year. (1-366)\n */\n static dayOfYear(year, month, date) {\n return new Array(month - 1)\n .fill()\n .reduce(\n (d, _, i) =>\n d + this.daysInMonth(year, i + 1),\n date,\n );\n }\n\n /**\n * Gets the number of days in a month for a given year.\n * @param {number} year The year.\n * @param {number} month The month. (1-12)\n * @return {number} The number of days in the month.\n */\n static daysInMonth(year, month) {\n const date = new Date(0);\n date.setUTCFullYear(year, month - 1, 1);\n month = date.getUTCMonth();\n\n return monthDays[month] +\n (\n month === 1 && this.isLeapYear(\n date.getUTCFullYear(),\n ) ?\n 1 :\n 0\n );\n }\n\n /**\n * Gets the number of days in a given year.\n * @param {number} year The year.\n * @return {number} The number of days in the year.\n */\n static daysInYear(year) {\n return !this.isLeapYear(year) ?\n 365 :\n 366;\n }\n\n /**\n * Creates a new DateTime from an array. Missing month/date values default to 1.\n * Missing time values default to 0.\n * @param {number[]} dateArray The date to parse.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n static fromArray(dateArray, options = {}) {\n const dateValues = dateArray.slice(0, 3);\n const timeValues = dateArray.slice(3);\n\n if (dateValues.length < 3) {\n dateValues.push(...new Array(3 - dateValues.length).fill(1));\n }\n\n if (timeValues.length < 4) {\n timeValues.push(...new Array(4 - timeValues.length).fill(0));\n }\n\n return new this(null, options)\n .withTimestamp(0)\n .withYear(...dateValues)\n .withHours(...timeValues);\n }\n\n /**\n * Creates a new DateTime from a Date.\n * @param {Date} date The date.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n static fromDate(date, options = {}) {\n return new this(date.getTime(), options);\n }\n\n /**\n * Creates a new DateTime from a format string.\n * @param {string} formatString The format string.\n * @param {string} dateString The date string.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @throws {Error} Throws when the format contains unsupported parsing tokens such as\n * `MMMMM` or `LLLLL`.\n * @return {DateTime} A new DateTime instance.\n */\n static fromFormat(formatString, dateString, options = {}) {\n const locale = 'locale' in options ?\n options.locale :\n config.defaultLocale;\n const requestedTimeZone = 'timeZone' in options ?\n options.timeZone :\n config.defaultTimeZone;\n\n const values = [];\n\n let match;\n let previousTokenNumeric = false;\n while (formatString && (match = formatString.match(formatTokenRegExp))) {\n const token = match[1];\n const position = match.index;\n const length = match[0].length;\n\n if (position) {\n const formatTest = formatString.substring(0, position);\n parseCompare(formatTest, dateString);\n }\n\n formatString = formatString.substring(position + length);\n dateString = dateString.substring(position);\n\n if (!token) {\n const literal = decodeLiteral(match[0]);\n parseCompare(literal, dateString);\n dateString = dateString.substring(literal.length);\n previousTokenNumeric = false;\n continue;\n }\n\n if (!(token in tokens)) {\n throw new Error(`Invalid token in DateTime format: ${token}`);\n }\n\n if (tokens[token].supportsLength?.(length, true) === false) {\n throw new Error(`Unsupported parsing token in DateTime format: ${token.repeat(length)}`);\n }\n\n const previousNumeric = previousTokenNumeric && !position;\n let nextSource = null;\n\n if (!previousNumeric) {\n const nextToken = formatString[0];\n if (nextToken && nextToken in tokens) {\n const nextLength = formatString.match(/^(.)\\1*/)[0].length;\n nextSource = tokens[nextToken].regex(locale, nextLength);\n }\n }\n\n const { numeric, source } = getTokenRegExp(\n tokens[token].regex(locale, length),\n nextSource,\n length,\n locale,\n previousNumeric,\n );\n const matchedValue = dateString.match(new RegExp(`^${source}`));\n\n if (!matchedValue) {\n throw new Error(`Unmatched token in DateTime string: ${token}`);\n }\n\n const literal = matchedValue[0];\n const value = tokens[token].input(locale, literal, length);\n\n if (value !== null) {\n const key = tokens[token].key;\n values.push({ key, value, literal, token, length });\n }\n\n dateString = dateString.substring(literal.length);\n previousTokenNumeric = numeric;\n }\n\n if (formatString) {\n parseCompare(formatString, dateString);\n dateString = dateString.substring(formatString.length);\n }\n\n if (dateString) {\n throw new Error(`Unmatched trailing characters in DateTime string: ${dateString}`);\n }\n\n let timeZone = requestedTimeZone;\n for (const { key, value } of values) {\n if (key !== 'timeZone') {\n continue;\n }\n\n timeZone = value;\n }\n\n let datetime = this.fromArray([1970, 1, 1], {\n locale,\n timeZone,\n });\n\n const methods = parseFactory();\n\n const testValues = [];\n\n for (const subKeys of parseOrderKeys) {\n for (const subKey of subKeys) {\n if (subKey === 'era' && !values.find((data) => data.key === 'year')) {\n continue;\n }\n\n for (const data of values) {\n const { key, value } = data;\n\n if (key !== subKey) {\n continue;\n }\n\n datetime = methods[key].set(datetime, value);\n testValues.push(data);\n }\n }\n }\n\n let isValid = true;\n for (const { key, value } of testValues) {\n if (key in methods && methods[key].get(datetime) !== value) {\n isValid = false;\n break;\n }\n }\n\n if (requestedTimeZone !== timeZone) {\n datetime = datetime.withTimeZone(requestedTimeZone);\n }\n\n datetime.isValid = isValid;\n\n return datetime;\n }\n\n /**\n * Creates a new DateTime from an ISO format string.\n * @param {string} dateString The date string.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n static fromISOString(dateString, options = {}) {\n let date = this.fromFormat(formats.rfc3339_extended, dateString, {\n locale: 'en',\n });\n\n if ('timeZone' in options) {\n date = date.withTimeZone(options.timeZone);\n }\n\n if ('locale' in options) {\n date = date.withLocale(options.locale);\n }\n\n return date;\n }\n\n /**\n * Creates a new DateTime from a timestamp.\n * @param {number} timestamp The number of seconds since the UNIX epoch.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n static fromTimestamp(timestamp, options = {}) {\n return new this(null, options)\n .withTimestamp(timestamp);\n }\n\n /**\n * Gets the default locale.\n * @return {string} The locale.\n */\n static getDefaultLocale() {\n return config.defaultLocale;\n }\n\n /**\n * Gets the default time zone.\n * @return {string} The default time zone.\n */\n static getDefaultTimeZone() {\n return config.defaultTimeZone;\n }\n\n /**\n * Checks whether the year is a leap year.\n * @param {number} year The year.\n * @return {boolean} Whether the given year is a leap year.\n */\n static isLeapYear(year) {\n const date = new Date(0);\n date.setUTCFullYear(year, 1, 29);\n\n return date.getUTCDate() === 29;\n }\n\n /**\n * Creates a new DateTime for the current time.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n static now(options = {}) {\n return new this(null, options);\n }\n\n /**\n * Sets whether dates will be clamped when changing months.\n * @param {boolean} clampDates Whether to clamp dates.\n */\n static setDateClamping(clampDates) {\n config.clampDates = clampDates;\n }\n\n /**\n * Sets the default locale.\n * @param {string} locale The locale.\n */\n static setDefaultLocale(locale) {\n config.defaultLocale = locale;\n }\n\n /**\n * Sets the default time zone.\n * @param {string} timeZone The time zone name.\n */\n static setDefaultTimeZone(timeZone) {\n config.defaultTimeZone = timeZone;\n }\n\n /**\n * Creates a new DateTime from the current time, epoch milliseconds, or a date string.\n * @param {string|number|null} [date=null] The source date. Numbers are interpreted as milliseconds since the UNIX epoch.\n * @param {DateTimeOptions} [options={}] Options for the new DateTime.\n * @param {string} [options.timeZone] The time zone to use.\n * @param {string} [options.locale] The locale to use.\n */\n constructor(date = null, options = {}) {\n let timestamp;\n let adjustOffset = false;\n\n if (date === null) {\n timestamp = Date.now();\n } else if (typeof date === 'number' && Number.isFinite(date)) {\n timestamp = date;\n } else if (date === `${date}`) {\n timestamp = Date.parse(date);\n\n if (isNaN(timestamp)) {\n throw new Error('Invalid date string supplied');\n }\n\n adjustOffset = !dateStringTimeZoneRegExp.test(date);\n\n if (adjustOffset) {\n const localTimestamp = parseLocalTimestamp(date);\n\n if (localTimestamp === null) {\n timestamp -= new Date(timestamp).getTimezoneOffset() * 60000;\n } else {\n timestamp = localTimestamp;\n }\n }\n } else {\n throw new Error('Invalid date supplied');\n }\n\n this._date = new Date(timestamp);\n this._dynamicTz = false;\n this.isValid = true;\n\n let timeZone = options.timeZone;\n\n if (!timeZone) {\n timeZone = config.defaultTimeZone;\n }\n\n if (['Z', 'GMT'].includes(timeZone)) {\n timeZone = 'UTC';\n }\n\n const match = timeZone.match(offsetRegExp);\n if (match) {\n this._offset =\n match[2] * 60 +\n parseInt(match[4] || 0, 10) +\n parseInt(match[5] || 0, 10) / 60;\n if (this._offset && match[1] === '+') {\n this._offset *= -1;\n }\n\n if (this._offset) {\n this._timeZone = formatOffset(this._offset);\n } else {\n this._dynamicTz = true;\n this._timeZone = 'UTC';\n }\n } else {\n this._dynamicTz = true;\n this._timeZone = timeZone;\n }\n\n this._locale = 'locale' in options ?\n options.locale :\n config.defaultLocale;\n\n if (this._dynamicTz) {\n this._offset = getOffset(this);\n }\n\n if (adjustOffset && this._offset) {\n const resolvedDate = setOffsetTime(this, timestamp);\n this._date.setTime(resolvedDate.getTime());\n this._offset = resolvedDate.getTimeZoneOffset();\n }\n }\n\n /**\n * Adds a day to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addDay() {\n return this.addDays(1);\n }\n\n /**\n * Adds days to the current DateTime.\n * @param {number} amount The number of days to add.\n * @return {DateTime} A new DateTime instance.\n */\n addDays(amount) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(\n this.getDate() + amount,\n ),\n amount,\n );\n }\n\n /**\n * Adds an hour to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addHour() {\n return this.addHours(1);\n }\n\n /**\n * Adds hours to the current DateTime.\n * @param {number} amount The number of hours to add.\n * @return {DateTime} A new DateTime instance.\n */\n addHours(amount) {\n return this.withTime(\n this.getTime() + (amount * 3600000),\n );\n }\n\n /**\n * Adds a minute to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addMinute() {\n return this.addMinutes(1);\n }\n\n /**\n * Adds minutes to the current DateTime.\n * @param {number} amount The number of minutes to add.\n * @return {DateTime} A new DateTime instance.\n */\n addMinutes(amount) {\n return this.withTime(\n this.getTime() + (amount * 60000),\n );\n }\n\n /**\n * Adds a month to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addMonth() {\n return this.addMonths(1);\n }\n\n /**\n * Adds months to the current DateTime.\n * @param {number} amount The number of months to add.\n * @return {DateTime} A new DateTime instance.\n */\n addMonths(amount) {\n return this.withMonth(\n this.getMonth() + amount,\n );\n }\n\n /**\n * Adds a second to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addSecond() {\n return this.addSeconds(1);\n }\n\n /**\n * Adds seconds to the current DateTime.\n * @param {number} amount The number of seconds to add.\n * @return {DateTime} A new DateTime instance.\n */\n addSeconds(amount) {\n return this.withTime(\n this.getTime() + (amount * 1000),\n );\n }\n\n /**\n * Adds a week to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addWeek() {\n return this.addWeeks(1);\n }\n\n /**\n * Adds weeks to the current DateTime.\n * @param {number} amount The number of weeks to add.\n * @return {DateTime} A new DateTime instance.\n */\n addWeeks(amount) {\n return this.withDate(\n this.getDate() + (amount * 7),\n );\n }\n\n /**\n * Adds a year to the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n addYear() {\n return this.addYears(1);\n }\n\n /**\n * Adds years to the current DateTime.\n * @param {number} amount The number of years to add.\n * @return {DateTime} A new DateTime instance.\n */\n addYears(amount) {\n return this.withYear(\n this.getYear() + amount,\n );\n }\n\n /**\n * Gets the localized day name for the current date.\n * @param {'long'|'short'|'narrow'} [type='long'] The type of day name to return.\n * @return {string} The localized day name.\n */\n dayName(type = 'long') {\n return formatDay(this.getLocale(), this.getDay(), type);\n }\n\n /**\n * Gets the localized day period for the current time.\n * @param {'long'|'short'|'narrow'} [type='long'] The type of day period to return.\n * @return {string} The localized day period.\n */\n dayPeriod(type = 'long') {\n return formatDayPeriod(\n this.getLocale(),\n this.getHours() < 12 ?\n 0 :\n 1,\n type,\n );\n }\n\n /**\n * Gets the number of days in the current month.\n * @return {number} The number of days in the current month.\n */\n daysInMonth() {\n return this.constructor.daysInMonth(\n this.getYear(),\n this.getMonth(),\n );\n }\n\n /**\n * Gets the number of days in the current year.\n * @return {number} The number of days in the current year.\n */\n daysInYear() {\n return this.constructor.daysInYear(\n this.getYear(),\n );\n }\n\n /**\n * Gets the difference between this and another Date in milliseconds.\n * @param {DateTime} other The date to compare to.\n * @return {number} The difference.\n */\n diff(other) {\n return this - other;\n }\n\n /**\n * Gets the difference between this and another Date in days.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInDays(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'day', relative);\n }\n\n /**\n * Gets the difference between this and another Date in hours.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInHours(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'hour', relative);\n }\n\n /**\n * Gets the difference between this and another Date in minutes.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInMinutes(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'minute', relative);\n }\n\n /**\n * Gets the difference between this and another Date in months.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInMonths(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'month', relative);\n }\n\n /**\n * Gets the difference between this and another Date in seconds.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInSeconds(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'second', relative);\n }\n\n /**\n * Gets the difference between this and another Date in weeks.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInWeeks(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'week', relative);\n }\n\n /**\n * Gets the difference between this and another Date in years.\n * @param {DateTime} other The date to compare to.\n * @param {{relative?: boolean}} [options] Options for comparing the dates.\n * @return {number} The difference.\n */\n diffInYears(other, { relative = true } = {}) {\n return calculateDiff(this, other, 'year', relative);\n }\n\n /**\n * Sets the DateTime to the end of the day.\n * @return {DateTime} A new DateTime instance.\n */\n endOfDay() {\n return this.withHours(23, 59, 59, 999);\n }\n\n /**\n * Sets the DateTime to the end of the hour.\n * @return {DateTime} A new DateTime instance.\n */\n endOfHour() {\n return this.withMinutes(59, 59, 999);\n }\n\n /**\n * Sets the DateTime to the end of the minute.\n * @return {DateTime} A new DateTime instance.\n */\n endOfMinute() {\n return this.withSeconds(59, 999);\n }\n\n /**\n * Sets the DateTime to the end of the month.\n * @return {DateTime} A new DateTime instance.\n */\n endOfMonth() {\n return this.withDate(this.daysInMonth())\n .endOfDay();\n }\n\n /**\n * Sets the DateTime to the end of the quarter.\n * @return {DateTime} A new DateTime instance.\n */\n endOfQuarter() {\n const month = this.getQuarter() * 3;\n return this.withMonth(month, this.constructor.daysInMonth(this.getYear(), month))\n .endOfDay();\n }\n\n /**\n * Sets the DateTime to the end of the second.\n * @return {DateTime} A new DateTime instance.\n */\n endOfSecond() {\n return this.withMilliseconds(999);\n }\n\n /**\n * Sets the DateTime to the end of the week.\n * @return {DateTime} A new DateTime instance.\n */\n endOfWeek() {\n return this.withWeekDay(7)\n .endOfDay();\n }\n\n /**\n * Sets the DateTime to the end of the year.\n * @return {DateTime} A new DateTime instance.\n */\n endOfYear() {\n return this.withMonth(12, 31)\n .endOfDay();\n }\n\n /**\n * Gets the localized era for the current date.\n * @param {'long'|'short'|'narrow'} [type='long'] The type of era to return.\n * @return {string} The localized era.\n */\n era(type = 'long') {\n return formatEra(\n this.getLocale(),\n this.getYear() < 0 ?\n 0 :\n 1,\n type,\n );\n }\n\n /**\n * Formats the current date using a format string.\n * @param {string} formatString The format string.\n * @return {string} The formatted date string.\n */\n format(formatString) {\n let match;\n let output = '';\n\n while (formatString && (match = formatString.match(formatTokenRegExp))) {\n const token = match[1];\n const position = match.index;\n const length = match[0].length;\n\n if (position) {\n output += formatString.substring(0, position);\n }\n\n formatString = formatString.substring(position + length);\n\n if (!token) {\n output += decodeLiteral(match[0]);\n continue;\n }\n\n if (!(token in tokens)) {\n throw new Error(`Invalid token in DateTime format: ${token}`);\n }\n\n if (tokens[token].supportsLength?.(length) === false) {\n throw new Error(`Unsupported token in DateTime format: ${token.repeat(length)}`);\n }\n\n output += tokens[token].output(this, length);\n }\n\n output += formatString;\n\n return output;\n }\n\n /**\n * Gets the date of the month in the current time zone.\n * @return {number} The date of the month.\n */\n getDate() {\n return new Date(getOffsetTime(this)).getUTCDate();\n }\n\n /**\n * Gets the day of the week in the current time zone.\n * @return {number} The day of the week. (0 = Sunday, 6 = Saturday)\n */\n getDay() {\n return new Date(getOffsetTime(this)).getUTCDay();\n }\n\n /**\n * Gets the day of the year in the current time zone.\n * @return {number} The day of the year. (1-366)\n */\n getDayOfYear() {\n return this.constructor.dayOfYear(\n this.getYear(),\n this.getMonth(),\n this.getDate(),\n );\n }\n\n /**\n * Gets the hours of the day in the current time zone.\n * @return {number} The hours of the day. (0-23)\n */\n getHours() {\n return new Date(getOffsetTime(this)).getUTCHours();\n }\n\n /**\n * Gets the current locale.\n * @return {string} The locale.\n */\n getLocale() {\n return this._locale;\n }\n\n /**\n * Gets the milliseconds in the current time zone.\n * @return {number} The milliseconds.\n */\n getMilliseconds() {\n return new Date(getOffsetTime(this)).getUTCMilliseconds();\n }\n\n /**\n * Gets the minutes in the current time zone.\n * @return {number} The minutes. (0-59)\n */\n getMinutes() {\n return new Date(getOffsetTime(this)).getUTCMinutes();\n }\n\n /**\n * Gets the month in the current time zone.\n * @return {number} The month. (1-12)\n */\n getMonth() {\n return new Date(getOffsetTime(this)).getUTCMonth() + 1;\n }\n\n /**\n * Gets the quarter of the year in the current time zone.\n * @return {number} The quarter of the year. (1-4)\n */\n getQuarter() {\n return Math.ceil(this.getMonth() / 3);\n }\n\n /**\n * Gets the seconds in the current time zone.\n * @return {number} The seconds. (0-59)\n */\n getSeconds() {\n return new Date(getOffsetTime(this)).getUTCSeconds();\n }\n\n /**\n * Gets the number of milliseconds since the UNIX epoch.\n * @return {number} The number of milliseconds since the UNIX epoch.\n */\n getTime() {\n return this._date.getTime();\n }\n\n /**\n * Gets the number of seconds since the UNIX epoch.\n * @return {number} The number of seconds since the UNIX epoch.\n */\n getTimestamp() {\n return Math.floor(this.getTime() / 1000);\n }\n\n /**\n * Gets the current time zone.\n * @return {string} The time zone.\n */\n getTimeZone() {\n return this._timeZone;\n }\n\n /**\n * Gets the current UTC offset in minutes.\n * @return {number} The UTC offset in minutes.\n */\n getTimeZoneOffset() {\n return this._offset;\n }\n\n /**\n * Gets the local week in the current time zone.\n * @return {number} The local week. (1-53)\n */\n getWeek() {\n const thisWeek = this.startOfDay().withWeekDay(1);\n const firstWeek = thisWeek.withWeek(1, 1);\n\n return 1 + Math.floor(\n (getOffsetTime(thisWeek) - getOffsetTime(firstWeek)) /\n 604800000,\n );\n }\n\n /**\n * Gets the local day of the week in the current time zone.\n * @return {number} The local day of the week. (1-7)\n */\n getWeekDay() {\n return weekDay(\n this.getLocale(),\n this.getDay(),\n );\n }\n\n /**\n * Gets the week day in month in the current time zone.\n * @return {number} The week day in month.\n */\n getWeekDayInMonth() {\n const thisWeek = this.getWeek();\n const first = this.withDate(1);\n const firstWeek = first.getWeek();\n const offset = first.getWeekDay() > this.getWeekDay() ?\n 0 : 1;\n return firstWeek > thisWeek ?\n thisWeek + offset :\n thisWeek - firstWeek + offset;\n }\n\n /**\n * Gets the week of month in the current time zone.\n * @return {number} The week of month.\n */\n getWeekOfMonth() {\n const thisWeek = this.getWeek();\n const firstWeek = this.withDate(1).getWeek();\n return firstWeek > thisWeek ?\n thisWeek + 1 :\n thisWeek - firstWeek + 1;\n }\n\n /**\n * Gets the week year in the current time zone.\n * @return {number} The week year.\n */\n getWeekYear() {\n const minDays = minimumDays(this.getLocale());\n return this.withWeekDay(7 - minDays + 1).getYear();\n }\n\n /**\n * Gets the year in the current time zone.\n * @return {number} The year.\n */\n getYear() {\n return new Date(getOffsetTime(this)).getUTCFullYear();\n }\n\n /**\n * Gets the difference between this and another Date in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in human readable form.\n */\n humanDiff(other) {\n const [amount, unit] = getBiggestDiff(this, other);\n return formatRelative(this.getLocale(), amount, unit);\n }\n\n /**\n * Gets the difference between this and another Date in days in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in days in human readable form.\n */\n humanDiffInDays(other) {\n return formatRelative(this.getLocale(), this.diffInDays(other), 'day');\n }\n\n /**\n * Gets the difference between this and another Date in hours in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in hours in human readable form.\n */\n humanDiffInHours(other) {\n return formatRelative(this.getLocale(), this.diffInHours(other), 'hour');\n }\n\n /**\n * Gets the difference between this and another Date in minutes in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in minutes in human readable form.\n */\n humanDiffInMinutes(other) {\n return formatRelative(this.getLocale(), this.diffInMinutes(other), 'minute');\n }\n\n /**\n * Gets the difference between this and another Date in months in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in months in human readable form.\n */\n humanDiffInMonths(other) {\n return formatRelative(this.getLocale(), this.diffInMonths(other), 'month');\n }\n\n /**\n * Gets the difference between this and another Date in seconds in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in seconds in human readable form.\n */\n humanDiffInSeconds(other) {\n return formatRelative(this.getLocale(), this.diffInSeconds(other), 'second');\n }\n\n /**\n * Gets the difference between this and another Date in weeks in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in weeks in human readable form.\n */\n humanDiffInWeeks(other) {\n return formatRelative(this.getLocale(), this.diffInWeeks(other), 'week');\n }\n\n /**\n * Gets the difference between this and another Date in years in human readable form.\n * @param {DateTime} other The date to compare to.\n * @return {string} The difference in years in human readable form.\n */\n humanDiffInYears(other) {\n return formatRelative(this.getLocale(), this.diffInYears(other), 'year');\n }\n\n /**\n * Checks whether this DateTime is after another date.\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date.\n */\n isAfter(other) {\n return this.diff(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by day).\n */\n isAfterDay(other) {\n return this.diffInDays(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by hour).\n */\n isAfterHour(other) {\n return this.diffInHours(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by minute).\n */\n isAfterMinute(other) {\n return this.diffInMinutes(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by month).\n */\n isAfterMonth(other) {\n return this.diffInMonths(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by second).\n */\n isAfterSecond(other) {\n return this.diffInSeconds(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by week).\n */\n isAfterWeek(other) {\n return this.diffInWeeks(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is after another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is after the other date (comparing by year).\n */\n isAfterYear(other) {\n return this.diffInYears(other) > 0;\n }\n\n /**\n * Checks whether this DateTime is before another date.\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date.\n */\n isBefore(other) {\n return this.diff(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by day).\n */\n isBeforeDay(other) {\n return this.diffInDays(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by hour).\n */\n isBeforeHour(other) {\n return this.diffInHours(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by minute).\n */\n isBeforeMinute(other) {\n return this.diffInMinutes(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by month).\n */\n isBeforeMonth(other) {\n return this.diffInMonths(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by second).\n */\n isBeforeSecond(other) {\n return this.diffInSeconds(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by week).\n */\n isBeforeWeek(other) {\n return this.diffInWeeks(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is before another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is before the other date (comparing by year).\n */\n isBeforeYear(other) {\n return this.diffInYears(other) < 0;\n }\n\n /**\n * Checks whether this DateTime is between two other dates.\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates.\n */\n isBetween(start, end) {\n return this.isAfter(start) && this.isBefore(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by day).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by day).\n */\n isBetweenDay(start, end) {\n return this.isAfterDay(start) && this.isBeforeDay(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by hour).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by hour).\n */\n isBetweenHour(start, end) {\n return this.isAfterHour(start) && this.isBeforeHour(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by minute).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by minute).\n */\n isBetweenMinute(start, end) {\n return this.isAfterMinute(start) && this.isBeforeMinute(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by month).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by month).\n */\n isBetweenMonth(start, end) {\n return this.isAfterMonth(start) && this.isBeforeMonth(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by second).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by second).\n */\n isBetweenSecond(start, end) {\n return this.isAfterSecond(start) && this.isBeforeSecond(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by week).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by week).\n */\n isBetweenWeek(start, end) {\n return this.isAfterWeek(start) && this.isBeforeWeek(end);\n }\n\n /**\n * Checks whether this DateTime is between two other dates (comparing by year).\n * @param {DateTime} start The first date to compare to.\n * @param {DateTime} end The second date to compare to.\n * @return {boolean} Whether this DateTime is between two other dates (comparing by year).\n */\n isBetweenYear(start, end) {\n return this.isAfterYear(start) && this.isBeforeYear(end);\n }\n\n /**\n * Checks whether the DateTime is in daylight saving time.\n * @return {boolean} Whether the current time is in daylight saving time.\n */\n isDst() {\n if (!this._dynamicTz) {\n return false;\n }\n\n const year = this.getYear();\n const dateA = this.constructor.fromArray([year, 1, 1], {\n timeZone: this.getTimeZone(),\n });\n const dateB = this.constructor.fromArray([year, 6, 1], {\n timeZone: this.getTimeZone(),\n });\n\n return this.getTimeZoneOffset() < Math.max(dateA.getTimeZoneOffset(), dateB.getTimeZoneOffset());\n }\n\n /**\n * Checks whether the year is a leap year.\n * @return {boolean} Whether the current year is a leap year.\n */\n isLeapYear() {\n return this.constructor.isLeapYear(\n this.getYear(),\n );\n }\n\n /**\n * Checks whether this DateTime is the same as another date.\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date.\n */\n isSame(other) {\n return this.diff(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by day).\n */\n isSameDay(other) {\n return this.diffInDays(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by hour).\n */\n isSameHour(other) {\n return this.diffInHours(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by minute).\n */\n isSameMinute(other) {\n return this.diffInMinutes(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by month).\n */\n isSameMonth(other) {\n return this.diffInMonths(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date.\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date.\n */\n isSameOrAfter(other) {\n return this.diff(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by day).\n */\n isSameOrAfterDay(other) {\n return this.diffInDays(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by hour).\n */\n isSameOrAfterHour(other) {\n return this.diffInHours(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by minute).\n */\n isSameOrAfterMinute(other) {\n return this.diffInMinutes(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by month).\n */\n isSameOrAfterMonth(other) {\n return this.diffInMonths(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by second).\n */\n isSameOrAfterSecond(other) {\n return this.diffInSeconds(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by week).\n */\n isSameOrAfterWeek(other) {\n return this.diffInWeeks(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or after another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or after the other date (comparing by year).\n */\n isSameOrAfterYear(other) {\n return this.diffInYears(other) >= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date.\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date.\n */\n isSameOrBefore(other) {\n return this.diff(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by day).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by day).\n */\n isSameOrBeforeDay(other) {\n return this.diffInDays(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by hour).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by hour).\n */\n isSameOrBeforeHour(other) {\n return this.diffInHours(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by minute).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by minute).\n */\n isSameOrBeforeMinute(other) {\n return this.diffInMinutes(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by month).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by month).\n */\n isSameOrBeforeMonth(other) {\n return this.diffInMonths(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by second).\n */\n isSameOrBeforeSecond(other) {\n return this.diffInSeconds(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by week).\n */\n isSameOrBeforeWeek(other) {\n return this.diffInWeeks(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as or before another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as or before the other date (comparing by year).\n */\n isSameOrBeforeYear(other) {\n return this.diffInYears(other) <= 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by second).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by second).\n */\n isSameSecond(other) {\n return this.diffInSeconds(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by week).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by week).\n */\n isSameWeek(other) {\n return this.diffInWeeks(other) === 0;\n }\n\n /**\n * Checks whether this DateTime is the same as another date (comparing by year).\n * @param {DateTime} other The date to compare to.\n * @return {boolean} Whether this DateTime is the same as the other date (comparing by year).\n */\n isSameYear(other) {\n return this.diffInYears(other) === 0;\n }\n\n /**\n * Gets the localized month name for the current date.\n * @param {'long'|'short'|'narrow'} [type='long'] The type of month name to return.\n * @return {string} The localized month name.\n */\n monthName(type = 'long') {\n return formatMonth(this.getLocale(), this.getMonth(), type);\n }\n\n /**\n * Sets the DateTime to the start of the day.\n * @return {DateTime} A new DateTime instance.\n */\n startOfDay() {\n return this.withHours(0, 0, 0, 0);\n }\n\n /**\n * Sets the DateTime to the start of the hour.\n * @return {DateTime} A new DateTime instance.\n */\n startOfHour() {\n return this.withMinutes(0, 0, 0);\n }\n\n /**\n * Sets the DateTime to the start of the minute.\n * @return {DateTime} A new DateTime instance.\n */\n startOfMinute() {\n return this.withSeconds(0, 0);\n }\n\n /**\n * Sets the DateTime to the start of the month.\n * @return {DateTime} A new DateTime instance.\n */\n startOfMonth() {\n return this.withDate(1)\n .startOfDay();\n }\n\n /**\n * Sets the DateTime to the start of the quarter.\n * @return {DateTime} A new DateTime instance.\n */\n startOfQuarter() {\n const month = this.getQuarter() * 3 - 2;\n return this.withMonth(month, 1)\n .startOfDay();\n }\n\n /**\n * Sets the DateTime to the start of the second.\n * @return {DateTime} A new DateTime instance.\n */\n startOfSecond() {\n return this.withMilliseconds(0);\n }\n\n /**\n * Sets the DateTime to the start of the week.\n * @return {DateTime} A new DateTime instance.\n */\n startOfWeek() {\n return this.withWeekDay(1)\n .startOfDay();\n }\n\n /**\n * Sets the DateTime to the start of the year.\n * @return {DateTime} A new DateTime instance.\n */\n startOfYear() {\n return this.withMonth(1, 1)\n .startOfDay();\n }\n\n /**\n * Subtracts a day from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subDay() {\n return this.addDays(-1);\n }\n\n /**\n * Subtracts days from the current DateTime.\n * @param {number} amount The number of days to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subDays(amount) {\n return this.addDays(-amount);\n }\n\n /**\n * Subtracts an hour from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subHour() {\n return this.addHours(-1);\n }\n\n /**\n * Subtracts hours from the current DateTime.\n * @param {number} amount The number of hours to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subHours(amount) {\n return this.addHours(-amount);\n }\n\n /**\n * Subtracts a minute from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subMinute() {\n return this.addMinutes(-1);\n }\n\n /**\n * Subtracts minutes from the current DateTime.\n * @param {number} amount The number of minutes to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subMinutes(amount) {\n return this.addMinutes(-amount);\n }\n\n /**\n * Subtracts a month from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subMonth() {\n return this.addMonths(-1);\n }\n\n /**\n * Subtracts months from the current DateTime.\n * @param {number} amount The number of months to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subMonths(amount) {\n return this.addMonths(-amount);\n }\n\n /**\n * Subtracts a second from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subSecond() {\n return this.addSeconds(-1);\n }\n\n /**\n * Subtracts seconds from the current DateTime.\n * @param {number} amount The number of seconds to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subSeconds(amount) {\n return this.addSeconds(-amount);\n }\n\n /**\n * Subtracts a week from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subWeek() {\n return this.addWeeks(-1);\n }\n\n /**\n * Subtracts weeks from the current DateTime.\n * @param {number} amount The number of weeks to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subWeeks(amount) {\n return this.addWeeks(-amount);\n }\n\n /**\n * Subtracts a year from the current DateTime.\n * @return {DateTime} A new DateTime instance.\n */\n subYear() {\n return this.addYears(-1);\n }\n\n /**\n * Subtracts years from the current DateTime.\n * @param {number} amount The number of years to subtract.\n * @return {DateTime} A new DateTime instance.\n */\n subYears(amount) {\n return this.addYears(-amount);\n }\n\n /**\n * Returns the primitive representation of the DateTime.\n * @param {'default'|'number'|'string'} hint The conversion hint.\n * @return {string|number} A string for default/string coercion or epoch milliseconds for numeric coercion.\n */\n [Symbol.toPrimitive](hint) {\n return hint === 'number' ?\n this.valueOf() :\n this.toString();\n }\n\n /**\n * Gets the name of the current time zone.\n * @param {'long'|'short'} [type='long'] The formatting type.\n * @return {string} The name of the time zone.\n */\n timeZoneName(type = 'long') {\n return this._dynamicTz ?\n formatTimeZoneName(this.getLocale(), this.getTime(), this.getTimeZone(), type) :\n 'GMT' + formatOffset(this.getTimeZoneOffset(), true, type === 'short');\n }\n\n /**\n * Formats the current date using \"eee MMM dd yyyy\".\n * @return {string} The formatted date string.\n */\n toDateString() {\n return this.format(formats.date);\n }\n\n /**\n * Formats the current date using \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\".\n * @return {string} The formatted date string.\n */\n toISOString() {\n return this\n .withLocale('en')\n .withTimeZone('UTC')\n .format(formats.rfc3339_extended);\n }\n\n /**\n * Returns the JSON representation of the current date.\n * @return {string|null} The ISO string for valid dates or null for invalid dates.\n */\n toJSON() {\n return this.isValid ?\n this.toISOString() :\n null;\n }\n\n /**\n * Formats the current date using \"eee MMM dd yyyy HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\n toString() {\n return this.format(formats.string);\n }\n\n /**\n * Formats the current date using \"HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\n toTimeString() {\n return this.format(formats.time);\n }\n\n /**\n * Formats the current date in the UTC time zone using \"eee MMM dd yyyy HH:mm:ss xx (VV)\".\n * @return {string} The formatted date string.\n */\n toUTCString() {\n return this\n .withLocale('en')\n .withTimeZone('UTC')\n .toString();\n }\n\n /**\n * Returns the number of milliseconds since the UNIX epoch.\n * @return {number} The number of milliseconds since the UNIX epoch.\n */\n valueOf() {\n return this.getTime();\n }\n\n /**\n * Gets the number of weeks in the current year.\n * @return {number} The number of weeks in the current year.\n */\n weeksInYear() {\n const minDays = minimumDays(this.getLocale());\n return this.withMonth(12, 24 + minDays).getWeek();\n }\n\n /**\n * Returns a copy with the date of the month changed in the current time zone.\n * @param {number} date The date of the month.\n * @return {DateTime} A new DateTime instance.\n */\n withDate(date) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(date),\n );\n }\n\n /**\n * Returns a copy with the day of the week changed in the current time zone.\n * @param {number} day The day of the week. (0 = Sunday, 6 = Saturday)\n * @return {DateTime} A new DateTime instance.\n */\n withDay(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(\n this.getDate() -\n this.getDay() +\n parseInt(day, 10),\n ),\n );\n }\n\n /**\n * Returns a copy with the day of the year changed in the current time zone.\n * @param {number} day The day of the year. (1-366)\n * @return {DateTime} A new DateTime instance.\n */\n withDayOfYear(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n 0,\n day,\n ),\n );\n }\n\n /**\n * Returns a copy with the hours changed in the current time zone.\n * @param {number} hours The hours. (0-23)\n * @param {number} [minutes] The minutes. (0-59)\n * @param {number} [seconds] The seconds. (0-59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} A new DateTime instance.\n */\n withHours(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCHours(...args),\n );\n }\n\n /**\n * Returns a copy with a different locale.\n * @param {string} locale The locale to use.\n * @return {DateTime} A new DateTime instance.\n */\n withLocale(locale) {\n return new this.constructor(this.getTime(), {\n locale,\n timeZone: this._timeZone,\n });\n }\n\n /**\n * Returns a copy with the milliseconds changed in the current time zone.\n * @param {number} milliseconds The milliseconds.\n * @return {DateTime} A new DateTime instance.\n */\n withMilliseconds(milliseconds) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMilliseconds(milliseconds),\n );\n }\n\n /**\n * Returns a copy with the minutes changed in the current time zone.\n * @param {number} minutes The minutes. (0-59)\n * @param {number} [seconds] The seconds. (0-59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} A new DateTime instance.\n */\n withMinutes(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMinutes(...args),\n );\n }\n\n /**\n * Returns a copy with the month changed in the current time zone.\n * @param {number} month The month. (1-12)\n * @param {number|null} [date] The date of the month.\n * @return {DateTime} A new DateTime instance.\n */\n withMonth(month, date = null) {\n if (date === null) {\n date = this.getDate();\n\n if (config.clampDates) {\n date = Math.min(\n date,\n this.constructor.daysInMonth(\n this.getYear(),\n month,\n ),\n );\n }\n }\n\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n month - 1,\n date,\n ),\n );\n }\n\n /**\n * Returns a copy with the quarter of the year changed in the current time zone.\n * @param {number} quarter The quarter of the year. (1-4)\n * @return {DateTime} A new DateTime instance.\n */\n withQuarter(quarter) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCMonth(\n quarter * 3 -\n 3,\n ),\n );\n }\n\n /**\n * Returns a copy with the seconds changed in the current time zone.\n * @param {number} seconds The seconds. (0-59)\n * @param {number} [milliseconds] The milliseconds.\n * @return {DateTime} A new DateTime instance.\n */\n withSeconds(...args) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCSeconds(...args),\n );\n }\n\n /**\n * Returns a copy with a different epoch-millisecond value.\n * @param {number} time The number of milliseconds since the UNIX epoch.\n * @return {DateTime} A new DateTime instance.\n */\n withTime(time) {\n return new this.constructor(time, {\n locale: this._locale,\n timeZone: this._timeZone,\n });\n }\n\n /**\n * Returns a copy with a different number of seconds since the UNIX epoch.\n * @param {number} timestamp The number of seconds since the UNIX epoch.\n * @return {DateTime} A new DateTime instance.\n */\n withTimestamp(timestamp) {\n return this.withTime(timestamp * 1000);\n }\n\n /**\n * Returns a copy in a different time zone.\n * @param {string} timeZone The time zone to use.\n * @return {DateTime} A new DateTime instance.\n */\n withTimeZone(timeZone) {\n return new this.constructor(this.getTime(), {\n locale: this._locale,\n timeZone,\n });\n }\n\n /**\n * Returns a copy with a fixed numeric UTC offset.\n * @param {number} offset The UTC offset in minutes.\n * @return {DateTime} A new DateTime instance.\n */\n withTimeZoneOffset(offset) {\n return new this.constructor(this.getTime(), {\n locale: this._locale,\n timeZone: formatOffset(offset),\n });\n }\n\n /**\n * Returns a copy with the local week changed in the current time zone.\n * @param {number} week The local week.\n * @param {number|null} [day] The local day of the week. (1-7)\n * @return {DateTime} A new DateTime instance.\n */\n withWeek(week, day = null) {\n if (day === null) {\n day = this.getWeekDay();\n }\n\n const minDays = minimumDays(this.getLocale());\n return this.withYear(this.getWeekYear(), 1, minDays + ((week - 1) * 7)).withWeekDay(day);\n }\n\n /**\n * Returns a copy with the local day of the week changed in the current time zone.\n * @param {number} day The local day of the week. (1-7)\n * @return {DateTime} A new DateTime instance.\n */\n withWeekDay(day) {\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCDate(\n this.getDate() -\n this.getWeekDay() +\n parseInt(day, 10),\n ),\n );\n }\n\n /**\n * Returns a copy with the week day in month changed in the current time zone.\n * @param {number} week The week day in month.\n * @return {DateTime} A new DateTime instance.\n */\n withWeekDayInMonth(week) {\n return this.withDate(\n this.getDate() +\n (\n week -\n this.getWeekDayInMonth()\n ) * 7,\n );\n }\n\n /**\n * Returns a copy with the week of month changed in the current time zone.\n * @param {number} week The week of month.\n * @return {DateTime} A new DateTime instance.\n */\n withWeekOfMonth(week) {\n return this.withDate(\n this.getDate() +\n (\n week -\n this.getWeekOfMonth()\n ) * 7,\n );\n }\n\n /**\n * Returns a copy with the local week year changed in the current time zone.\n * @param {number} year The local week year.\n * @param {number|null} [week] The local week.\n * @param {number|null} [day] The local day of the week. (1-7)\n * @return {DateTime} A new DateTime instance.\n */\n withWeekYear(year, week = null, day = null) {\n const minDays = minimumDays(this.getLocale());\n const Constructor = this.constructor;\n\n if (week === null) {\n week = Math.min(\n this.getWeek(),\n Constructor.fromArray([year, 1, minDays], {\n locale: this.getLocale(),\n timeZone: this.getTimeZone(),\n }).weeksInYear(),\n );\n }\n\n if (day === null) {\n day = this.getWeekDay();\n }\n\n return this.withYear(year, 1, minDays + ((week - 1) * 7)).withWeekDay(day);\n }\n\n /**\n * Returns a copy with the year changed in the current time zone.\n * @param {number} year The year.\n * @param {number|null} [month] The month. (1-12)\n * @param {number|null} [date] The date of the month.\n * @return {DateTime} A new DateTime instance.\n */\n withYear(year, month = null, date = null) {\n if (month === null) {\n month = this.getMonth();\n }\n\n if (date === null) {\n date = this.getDate();\n\n if (config.clampDates) {\n date = Math.min(\n date,\n this.constructor.daysInMonth(\n year,\n month,\n ),\n );\n }\n }\n\n return setOffsetTime(\n this,\n new Date(getOffsetTime(this)).setUTCFullYear(\n year,\n month - 1,\n date,\n ),\n );\n }\n}\n"],"names":["clearFactoryDataCache"],"mappings":"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,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE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"}
|