@northguild/gmt 1.15.0 → 1.16.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/README.md +852 -272
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +99 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
- package/dist/instant/convert/toOffsetInstant.js +185 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +28 -9
- package/dist/internal/index.js +28 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +40 -0
- package/dist/internal/isoStringBody.js +85 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1173 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +22 -9
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +12 -6
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +21 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +17 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +22 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +24 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +7 -3
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +8 -4
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +18 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +3 -0
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +25 -14
- package/dist/regex/calendar-date.js +26 -15
- package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
- package/dist/regex/calendar-zoned-date-time.js +23 -39
- package/dist/regex/date-time.d.ts +14 -4
- package/dist/regex/date-time.js +15 -5
- package/dist/regex/date.d.ts +45 -3
- package/dist/regex/date.js +47 -5
- package/dist/regex/http-date.d.ts +10 -6
- package/dist/regex/http-date.js +10 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +41 -8
- package/dist/regex/leap-second.js +42 -9
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +15 -7
- package/dist/regex/rfc-2822.js +15 -7
- package/dist/regex/rfc-3339.d.ts +8 -1
- package/dist/regex/rfc-3339.js +9 -2
- package/dist/regex/sql-date-time.d.ts +27 -8
- package/dist/regex/sql-date-time.js +28 -9
- package/dist/regex/time-zone-like.d.ts +24 -15
- package/dist/regex/time-zone-like.js +25 -16
- package/dist/regex/time.d.ts +20 -6
- package/dist/regex/time.js +20 -6
- package/dist/regex/unix.d.ts +13 -5
- package/dist/regex/unix.js +13 -5
- package/dist/regex/utc-date-time.d.ts +19 -9
- package/dist/regex/utc-date-time.js +20 -10
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js +5 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +26 -4
- package/dist/unix/format/formatUnix.js +48 -34
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +20 -3
- package/dist/utc/format/formatUtc.js +41 -12
- package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +24 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +6 -1
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
- package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
- package/dist/zoned/interval/intervalXorZoned.js +34 -64
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +475 -34
- package/skills/gmt-arithmetic/SKILL.md +197 -16
- package/skills/gmt-basics/SKILL.md +61 -14
- package/skills/gmt-integration/SKILL.md +54 -8
- package/skills/gmt-timezone/SKILL.md +141 -24
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { nextZonedBucketStart, zonedNextTransition, zonedUnitStart, } from "../../internal/index.js";
|
|
3
|
+
import { isValidInstant } from "../../precision/validate/index.js";
|
|
4
|
+
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
5
|
+
import { isValidZoneBucketUnit } from "../validate/index.js";
|
|
6
|
+
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
7
|
+
/**
|
|
8
|
+
* Buckets a single call will return before giving up.
|
|
9
|
+
*
|
|
10
|
+
* Temporal's range runs to ±273,790 years, so an unbounded hour walk over it would exhaust
|
|
11
|
+
* memory. This covers 416 days of hours, 27 years of days, 192 years of weeks or 833 years of
|
|
12
|
+
* months — past anything a caller renders or aggregates in one pass.
|
|
13
|
+
*/
|
|
14
|
+
const MAX_BUCKETS = 10_000;
|
|
15
|
+
const NANOSECONDS_PER_HOUR = 3600000000000n;
|
|
16
|
+
/**
|
|
17
|
+
* The longest wall-clock stretch of each unit. Any wall-clock interval this long holds a unit
|
|
18
|
+
* start: an hour holds an hour start, 24 hours a midnight, 7 days a Monday, 31 days a first of
|
|
19
|
+
* the month.
|
|
20
|
+
*/
|
|
21
|
+
const LONGEST_UNIT_NANOSECONDS = {
|
|
22
|
+
hour: NANOSECONDS_PER_HOUR,
|
|
23
|
+
day: 24n * NANOSECONDS_PER_HOUR,
|
|
24
|
+
week: 168n * NANOSECONDS_PER_HOUR,
|
|
25
|
+
month: 744n * NANOSECONDS_PER_HOUR,
|
|
26
|
+
};
|
|
27
|
+
/** Offset transitions read before the pre-count gives up and leaves the answer to the walk. */
|
|
28
|
+
const MAX_PRECOUNT_TRANSITIONS = 4_096;
|
|
29
|
+
/**
|
|
30
|
+
* True when `[start, end)` certainly touches more than `MAX_BUCKETS` buckets, decided from the span
|
|
31
|
+
* instead of stepping bucket by bucket (which costs milliseconds a step in some zones).
|
|
32
|
+
*
|
|
33
|
+
* Over a prefix of the range, the local wall clock runs continuously between offset transitions.
|
|
34
|
+
* Those stretches cover at least the prefix's length less every backward offset change, in at most
|
|
35
|
+
* one stretch more than there are transitions, and each stretch of wall clock holds at least
|
|
36
|
+
* `floor(length / LONGEST_UNIT_NANOSECONDS)` distinct unit starts, each the start of its own
|
|
37
|
+
* bucket before `end`. The count subtracts two per stretch for the partial units at its ends.
|
|
38
|
+
* `false` means "not certain": the walk decides, exactly as before.
|
|
39
|
+
*/
|
|
40
|
+
function certainlyExceedsBucketCap(startZoned, endZoned, unit) {
|
|
41
|
+
const unitNs = LONGEST_UNIT_NANOSECONDS[unit];
|
|
42
|
+
const startNs = startZoned.epochNanoseconds;
|
|
43
|
+
const prefixEndNs = [
|
|
44
|
+
endZoned.epochNanoseconds,
|
|
45
|
+
startNs + 2n * BigInt(MAX_BUCKETS + 1) * unitNs,
|
|
46
|
+
].reduce((a, b) => (a < b ? a : b));
|
|
47
|
+
if (prefixEndNs - startNs <= BigInt(MAX_BUCKETS) * unitNs) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
let backwardNs = 0n;
|
|
51
|
+
let transitions = 0;
|
|
52
|
+
try {
|
|
53
|
+
for (let current = startZoned, next = zonedNextTransition(current); next !== null && next.epochNanoseconds < prefixEndNs; current = next, next = zonedNextTransition(current)) {
|
|
54
|
+
if (++transitions > MAX_PRECOUNT_TRANSITIONS) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const shift = BigInt(current.offsetNanoseconds - next.offsetNanoseconds);
|
|
58
|
+
backwardNs += shift > 0n ? shift : 0n;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const wallStarts = (prefixEndNs - startNs - backwardNs) / unitNs;
|
|
65
|
+
return wallStarts - 2n * BigInt(transitions + 1) > BigInt(MAX_BUCKETS);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The bucket start after `current`: `undefined` when it lies past Temporal's last representable
|
|
69
|
+
* instant, null when the stepper cannot find it.
|
|
70
|
+
*/
|
|
71
|
+
function nextBucketStartWithinRange(current, unit) {
|
|
72
|
+
try {
|
|
73
|
+
return nextZonedBucketStart(current, unit);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (error instanceof RangeError)
|
|
77
|
+
return undefined;
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Return the start instant of every `unit` bucket the half-open range `[start, end)` touches,
|
|
83
|
+
* bucketed **in `timeZone`**.
|
|
84
|
+
*
|
|
85
|
+
* This is "group by day in `America/New_York`" over UTC timestamps, done correctly. Buckets
|
|
86
|
+
* are not uniform in length and that is the point: a day that springs forward is 23 hours and
|
|
87
|
+
* one that falls back is 25, so a daily aggregate built on a fixed 24 hours drifts an hour
|
|
88
|
+
* twice a year, and a container's chargeable days — counted in terminal-local calendar days —
|
|
89
|
+
* come out wrong.
|
|
90
|
+
*
|
|
91
|
+
* - Each entry is a boundary `floorToZone` would return, so bucket *i* runs from `result[i]`
|
|
92
|
+
* up to (not including) `result[i + 1]`, and the last runs to the next boundary after it.
|
|
93
|
+
* - The range is half-open: an `end` landing exactly on a boundary does not open that bucket.
|
|
94
|
+
* A zero-length range mid-bucket still returns the one bucket holding it; on a boundary it
|
|
95
|
+
* returns `[]`.
|
|
96
|
+
* - Both endpoints are read in `timeZone`. Any bracketed zone they carry is ignored, as in
|
|
97
|
+
* `floorToZone`.
|
|
98
|
+
* - Weeks start on Monday (ISO 8601). `unit` is the same four-unit set `floorToZone` takes,
|
|
99
|
+
* singular or plural, which `isValidZoneBucketUnit` narrows.
|
|
100
|
+
* - A local boundary that does not exist is not invented: the day Samoa deleted crossing the
|
|
101
|
+
* date line is absent, a local day whose midnight is skipped starts at 01:00, and in a zone
|
|
102
|
+
* that falls back by half an hour the local 01:00 hour bucket is 90 minutes long.
|
|
103
|
+
* - A bucket is returned when its start is representable, even if the bucket after it would
|
|
104
|
+
* start past Temporal's last instant (`+275760-09-13T00:00:00Z`).
|
|
105
|
+
* - Returns `[]` on invalid input, when `start` is after `end`, when the range would need more
|
|
106
|
+
* than 10,000 buckets, when a boundary in it is not representable (see `floorToZone`), and
|
|
107
|
+
* if a zone ever presented more transitions inside one bucket than the stepper walks — no
|
|
108
|
+
* IANA zone does, and the whole table was swept to confirm it. A truncated list would be
|
|
109
|
+
* worse than the sentinel, so none is returned in any of those cases.
|
|
110
|
+
*
|
|
111
|
+
* @param start ISO 8601 instant string for the range start (inclusive)
|
|
112
|
+
* @param end ISO 8601 instant string for the range end (exclusive)
|
|
113
|
+
* @param unit bucket unit ("hour" | "day" | "week" | "month", or its plural)
|
|
114
|
+
* @param timeZone IANA timeZone identifier the buckets are computed in
|
|
115
|
+
* @returns array of UTC instant strings ending in "Z", or [] on invalid input
|
|
116
|
+
*
|
|
117
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"]
|
|
118
|
+
* @example bucketRange("2024-03-09T05:00:00Z", "2024-03-12T04:00:00Z", "day", "America/New_York") // ["2024-03-09T05:00:00Z", "2024-03-10T05:00:00Z", "2024-03-11T04:00:00Z"] (the middle day is 23 hours)
|
|
119
|
+
* @example bucketRange("2024-11-02T04:00:00Z", "2024-11-05T05:00:00Z", "day", "America/New_York") // ["2024-11-02T04:00:00Z", "2024-11-03T04:00:00Z", "2024-11-04T05:00:00Z"] (the middle day is 25 hours)
|
|
120
|
+
* @example bucketRange("2024-11-03T04:00:00Z", "2024-11-03T08:00:00Z", "hour", "America/New_York") // ["2024-11-03T04:00:00Z", "2024-11-03T05:00:00Z", "2024-11-03T06:00:00Z", "2024-11-03T07:00:00Z"] (the repeated 01:00 is its own bucket)
|
|
121
|
+
* @example bucketRange("2024-06-14T04:00:00Z", "2024-06-14T04:00:00Z", "day", "America/New_York") // [] (zero length, on a boundary)
|
|
122
|
+
* @example bucketRange("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "day", "America/New_York") // ["+275760-09-12T04:00:00Z"] (the next day would start past the last instant; this one is still returned)
|
|
123
|
+
* @example bucketRange("2024-06-16T00:00:00Z", "2024-06-15T00:00:00Z", "day", "UTC") // [] (start after end)
|
|
124
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"] (plural unit name)
|
|
125
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "year", "UTC") // [] (not a bucketing unit)
|
|
126
|
+
*/
|
|
127
|
+
export function bucketRange(start, end, unit, timeZone) {
|
|
128
|
+
// The singular name; the guard below rejects anything outside the four units.
|
|
129
|
+
const resolvedUnit = resolveDateTimeUnit(unit);
|
|
130
|
+
if (!isValidInstant(start) ||
|
|
131
|
+
!isValidInstant(end) ||
|
|
132
|
+
!isValidZoneBucketUnit(resolvedUnit) ||
|
|
133
|
+
!isValidTimeZone(timeZone)) {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const startZoned = Temporal.Instant.from(start).toZonedDateTimeISO(timeZone);
|
|
138
|
+
const endZoned = Temporal.Instant.from(end).toZonedDateTimeISO(timeZone);
|
|
139
|
+
if (Temporal.ZonedDateTime.compare(startZoned, endZoned) > 0)
|
|
140
|
+
return [];
|
|
141
|
+
if (certainlyExceedsBucketCap(startZoned, endZoned, resolvedUnit))
|
|
142
|
+
return [];
|
|
143
|
+
const boundaries = [];
|
|
144
|
+
const first = zonedUnitStart(startZoned, resolvedUnit);
|
|
145
|
+
if (!first)
|
|
146
|
+
return [];
|
|
147
|
+
let current = first;
|
|
148
|
+
for (let i = 0; i < MAX_BUCKETS; i++) {
|
|
149
|
+
if (Temporal.ZonedDateTime.compare(current, endZoned) >= 0) {
|
|
150
|
+
return boundaries;
|
|
151
|
+
}
|
|
152
|
+
boundaries.push(current.toInstant().toString());
|
|
153
|
+
const next = nextBucketStartWithinRange(current, resolvedUnit);
|
|
154
|
+
// Past the last representable instant, so after `end`: every touched bucket is collected.
|
|
155
|
+
if (next === undefined)
|
|
156
|
+
return boundaries;
|
|
157
|
+
if (!next)
|
|
158
|
+
return [];
|
|
159
|
+
current = next;
|
|
160
|
+
}
|
|
161
|
+
// `MAX_BUCKETS` boundaries are collected; the range fit only if the next one clears `end`.
|
|
162
|
+
return Temporal.ZonedDateTime.compare(current, endZoned) >= 0
|
|
163
|
+
? boundaries
|
|
164
|
+
: [];
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { ZoneBucketUnit } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Floor an instant to the start of the `unit` containing it **in `timeZone`**, and return
|
|
5
|
+
* the instant of that boundary.
|
|
6
|
+
*
|
|
7
|
+
* Flooring a UTC instant to a UTC day and calling it a local day is wrong for most of the
|
|
8
|
+
* world for most of the day: 03:00 UTC on 15 June is still 14 June in New York, so the local
|
|
9
|
+
* day it belongs to started 20 hours before the UTC one did. The zone is an argument because
|
|
10
|
+
* GMT has no ambient one and must not acquire one.
|
|
11
|
+
*
|
|
12
|
+
* - `unit` is `"hour"`, `"day"`, `"week"` or `"month"`, or its plural (`"days"`), as Temporal
|
|
13
|
+
* accepts. Weeks start on Monday (ISO 8601), matching `startOfZoned` and `intervalCountZoned`.
|
|
14
|
+
* `isValidZoneBucketUnit` narrows a candidate unit, singular or plural, so a unit out of config
|
|
15
|
+
* can be told apart from a bad instant.
|
|
16
|
+
* - `value` is any instant `isValidInstant` accepts — `Z`, an offset, or a bracketed zone.
|
|
17
|
+
* Only its instant is read: a bracketed zone in `value` is *not* the zone the boundary is
|
|
18
|
+
* computed in, `timeZone` is, and the two may differ freely.
|
|
19
|
+
* - The boundary is a real instant in the zone, so it survives the days a local boundary does
|
|
20
|
+
* not exist: a local day whose midnight is skipped by a spring-forward starts at 01:00, and
|
|
21
|
+
* a wall hour repeated by a fall-back floors to whichever pass `value` was in.
|
|
22
|
+
* - Returns a UTC instant string ending in `"Z"`, exactly — no rounding.
|
|
23
|
+
* - Returns `""` on invalid input, and where the boundary itself is not representable — the
|
|
24
|
+
* week or month containing the first instant Temporal supports began before it.
|
|
25
|
+
*
|
|
26
|
+
* @param value ISO 8601 instant string (e.g. "2024-06-15T03:00:00Z")
|
|
27
|
+
* @param unit boundary unit ("hour" | "day" | "week" | "month", or its plural)
|
|
28
|
+
* @param timeZone IANA timeZone identifier the boundary is computed in
|
|
29
|
+
* @returns UTC instant string ending in "Z", or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
32
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "UTC") // "2024-06-15T00:00:00Z" (the same instant, a different local day)
|
|
33
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "hour", "Asia/Kathmandu") // "2024-06-15T02:15:00Z" (a +05:45 zone's hour boundary)
|
|
34
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "week", "America/New_York") // "2024-06-10T04:00:00Z" (the Monday)
|
|
35
|
+
* @example floorToZone("2024-09-08T10:00:00Z", "day", "America/Santiago") // "2024-09-08T04:00:00Z" (local midnight is skipped, so the day starts at 01:00)
|
|
36
|
+
* @example floorToZone("2024-05-15T10:20:30.123Z", "days", "Europe/Berlin") // "2024-05-14T22:00:00Z" (plural unit name)
|
|
37
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "year", "UTC") // "" (not a bucketing unit)
|
|
38
|
+
* @example floorToZone("2024-06-15T03:00:00", "day", "UTC") // "" (zoneless, so it names no instant)
|
|
39
|
+
* @example floorToZone("-271821-04-20T00:00:00Z", "month", "UTC") // "" (that month began before Temporal's range does)
|
|
40
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "Invalid/Zone") // ""
|
|
41
|
+
*/
|
|
42
|
+
export declare function floorToZone(value: string, unit: Temporal.SmallestUnit<ZoneBucketUnit>, timeZone: string): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { zonedUnitStart } from "../../internal/index.js";
|
|
3
|
+
import { isValidInstant } from "../../precision/validate/index.js";
|
|
4
|
+
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
5
|
+
import { isValidZoneBucketUnit } from "../validate/index.js";
|
|
6
|
+
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
7
|
+
/**
|
|
8
|
+
* Floor an instant to the start of the `unit` containing it **in `timeZone`**, and return
|
|
9
|
+
* the instant of that boundary.
|
|
10
|
+
*
|
|
11
|
+
* Flooring a UTC instant to a UTC day and calling it a local day is wrong for most of the
|
|
12
|
+
* world for most of the day: 03:00 UTC on 15 June is still 14 June in New York, so the local
|
|
13
|
+
* day it belongs to started 20 hours before the UTC one did. The zone is an argument because
|
|
14
|
+
* GMT has no ambient one and must not acquire one.
|
|
15
|
+
*
|
|
16
|
+
* - `unit` is `"hour"`, `"day"`, `"week"` or `"month"`, or its plural (`"days"`), as Temporal
|
|
17
|
+
* accepts. Weeks start on Monday (ISO 8601), matching `startOfZoned` and `intervalCountZoned`.
|
|
18
|
+
* `isValidZoneBucketUnit` narrows a candidate unit, singular or plural, so a unit out of config
|
|
19
|
+
* can be told apart from a bad instant.
|
|
20
|
+
* - `value` is any instant `isValidInstant` accepts — `Z`, an offset, or a bracketed zone.
|
|
21
|
+
* Only its instant is read: a bracketed zone in `value` is *not* the zone the boundary is
|
|
22
|
+
* computed in, `timeZone` is, and the two may differ freely.
|
|
23
|
+
* - The boundary is a real instant in the zone, so it survives the days a local boundary does
|
|
24
|
+
* not exist: a local day whose midnight is skipped by a spring-forward starts at 01:00, and
|
|
25
|
+
* a wall hour repeated by a fall-back floors to whichever pass `value` was in.
|
|
26
|
+
* - Returns a UTC instant string ending in `"Z"`, exactly — no rounding.
|
|
27
|
+
* - Returns `""` on invalid input, and where the boundary itself is not representable — the
|
|
28
|
+
* week or month containing the first instant Temporal supports began before it.
|
|
29
|
+
*
|
|
30
|
+
* @param value ISO 8601 instant string (e.g. "2024-06-15T03:00:00Z")
|
|
31
|
+
* @param unit boundary unit ("hour" | "day" | "week" | "month", or its plural)
|
|
32
|
+
* @param timeZone IANA timeZone identifier the boundary is computed in
|
|
33
|
+
* @returns UTC instant string ending in "Z", or "" on invalid input
|
|
34
|
+
*
|
|
35
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
36
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "UTC") // "2024-06-15T00:00:00Z" (the same instant, a different local day)
|
|
37
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "hour", "Asia/Kathmandu") // "2024-06-15T02:15:00Z" (a +05:45 zone's hour boundary)
|
|
38
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "week", "America/New_York") // "2024-06-10T04:00:00Z" (the Monday)
|
|
39
|
+
* @example floorToZone("2024-09-08T10:00:00Z", "day", "America/Santiago") // "2024-09-08T04:00:00Z" (local midnight is skipped, so the day starts at 01:00)
|
|
40
|
+
* @example floorToZone("2024-05-15T10:20:30.123Z", "days", "Europe/Berlin") // "2024-05-14T22:00:00Z" (plural unit name)
|
|
41
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "year", "UTC") // "" (not a bucketing unit)
|
|
42
|
+
* @example floorToZone("2024-06-15T03:00:00", "day", "UTC") // "" (zoneless, so it names no instant)
|
|
43
|
+
* @example floorToZone("-271821-04-20T00:00:00Z", "month", "UTC") // "" (that month began before Temporal's range does)
|
|
44
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "day", "Invalid/Zone") // ""
|
|
45
|
+
*/
|
|
46
|
+
export function floorToZone(value, unit, timeZone) {
|
|
47
|
+
// The singular name; the guard below rejects anything outside the four units.
|
|
48
|
+
const resolvedUnit = resolveDateTimeUnit(unit);
|
|
49
|
+
if (!isValidInstant(value) ||
|
|
50
|
+
!isValidZoneBucketUnit(resolvedUnit) ||
|
|
51
|
+
!isValidTimeZone(timeZone)) {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const zoned = Temporal.Instant.from(value).toZonedDateTimeISO(timeZone);
|
|
56
|
+
const start = zonedUnitStart(zoned, resolvedUnit);
|
|
57
|
+
return start ? start.toInstant().toString() : "";
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { FiscalCalendar } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the fiscal year, period and week `value` falls in, for a 52/53-week retail calendar.
|
|
4
|
+
*
|
|
5
|
+
* 52 × 7 is 364 days, so a 52-week fiscal year drifts a day or two against the sun every year
|
|
6
|
+
* and a 53rd week is inserted every five or six to pull it back. Both the drift and the
|
|
7
|
+
* insertion fall out of `calendar` — nothing here is bundled, because there is no single
|
|
8
|
+
* correct retail calendar.
|
|
9
|
+
*
|
|
10
|
+
* - `calendar.pattern` is the weeks-per-period shape of a quarter: `"4-5-4"` (the NRF retail
|
|
11
|
+
* standard), `"4-4-5"` or `"5-4-4"`. Four quarters of 13 weeks make the 52-week year.
|
|
12
|
+
* - **`calendar.yearEndsOn` states the year-end *rule*, by example, not one year's end.**
|
|
13
|
+
* Fiscal years end on that date's weekday, on the occurrence nearest that date's month and
|
|
14
|
+
* day. The NRF's published rule — "the Saturday nearest to January 31"
|
|
15
|
+
* ([NRF 4-5-4 calendar](https://nrf.com/resources/4-5-4-calendar)) — is `"2026-01-31"`, a
|
|
16
|
+
* Saturday falling exactly on January 31. Passing a published year end from a 53-week year
|
|
17
|
+
* instead (`"2024-02-03"`) states a different rule, because that date sits three days off
|
|
18
|
+
* the target the rule is centred on, and yields a different, self-consistent calendar.
|
|
19
|
+
* - `week` is the week of the fiscal year, 1–53, the numbering the NRF publishes. `period` is
|
|
20
|
+
* 1–12. A 53rd week is appended to period 12 — the NRF adds it "to the end of the
|
|
21
|
+
* calendar", which makes a 4-5-4 year's final quarter 4-5-5.
|
|
22
|
+
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF: fiscal 2023
|
|
23
|
+
* runs 2023-01-29 to 2024-02-03. Organisations labelling by the end year should add one.
|
|
24
|
+
* - **`year` is not a unique key for a rule anchored near 1 January.** A 52/53-week year is
|
|
25
|
+
* 364 or 371 days, so it drifts against the calendar, and no label taken from a calendar
|
|
26
|
+
* year survives that for every anchor. Under `yearEndsOn: "2022-12-31"` — the Saturday
|
|
27
|
+
* nearest to 31 December — two consecutive fiscal years both start in 2023 and share the
|
|
28
|
+
* label, and 2020, 2025 and 2031 label no fiscal year at all. Grouping by `year` there
|
|
29
|
+
* merges 104 weeks and drops a year. `"2027-01-02"` states a different rule, the Saturday
|
|
30
|
+
* nearest to 2 January: it too gives 2023 twice, merging 105 weeks, and skips 2018, 2024
|
|
31
|
+
* and 2029. January/February anchors like the NRF's
|
|
32
|
+
* are unaffected. If your rule sits near a year boundary, key on the fiscal year's own start
|
|
33
|
+
* date — which `yearEndsOn` determines, and which is yours to enumerate — not on `year`.
|
|
34
|
+
* GMT does not invent a label the inputs do not fix.
|
|
35
|
+
* - A `yearEndsOn` month-day that does not exist in a year follows Temporal's
|
|
36
|
+
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A
|
|
37
|
+
* "month-end" rule (26 CFR 1.441-2 style) would put a February 28 anchor on February 29 in
|
|
38
|
+
* leap years; this does not — state such a rule with a date that exists every year.
|
|
39
|
+
* - Whether a fiscal year has 52 or 53 weeks is derived from the gap between its own two
|
|
40
|
+
* ends, never assumed from a table.
|
|
41
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
42
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
43
|
+
* - Returns null on invalid input, including an unrecognised pattern or a `yearEndsOn` that
|
|
44
|
+
* is not a plain ISO date. Both share the sentinel with a date that cannot be placed, so
|
|
45
|
+
* check the calendar with `isValidFiscalPattern` and `isValidDate` first to tell a
|
|
46
|
+
* misconfigured calendar apart from an unusable date.
|
|
47
|
+
*
|
|
48
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
49
|
+
* @param calendar { pattern: "4-5-4" | "4-4-5" | "5-4-4", yearEndsOn: ISO date stating the rule }
|
|
50
|
+
* @returns { year, period, week }, or null on invalid input
|
|
51
|
+
*
|
|
52
|
+
* @example getFiscalPeriod("2024-06-15", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 5, week: 19 }
|
|
53
|
+
* @example getFiscalPeriod("2024-02-04", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 1, week: 1 } (NRF fiscal 2024 opens)
|
|
54
|
+
* @example getFiscalPeriod("2024-01-28", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2023, period: 12, week: 53 } (the 53rd week of NRF fiscal 2023)
|
|
55
|
+
* @example getFiscalPeriod("2024-03-31", { pattern: "4-4-5", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 3, week: 9 } (the same week, a period later than 4-5-4 puts it)
|
|
56
|
+
* @example getFiscalPeriod("2024-06-15", { pattern: "4-5-5", yearEndsOn: "2026-01-31" }) // null (not one of the three patterns)
|
|
57
|
+
* @example getFiscalPeriod("2024-06-15T12:00:00Z", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // null (a moment, not a calendar date)
|
|
58
|
+
* @example getFiscalPeriod("invalid", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // null
|
|
59
|
+
*/
|
|
60
|
+
export declare function getFiscalPeriod(value: string, calendar: FiscalCalendar): {
|
|
61
|
+
year: number;
|
|
62
|
+
period: number;
|
|
63
|
+
week: number;
|
|
64
|
+
} | null;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { fiscalPeriodOfWeek, fiscalYearOf, zonelessCalendarDate, } from "../../internal/index.js";
|
|
3
|
+
import { isValidDate } from "../../plain/validate/index.js";
|
|
4
|
+
import { isValidFiscalPattern } from "../validate/index.js";
|
|
5
|
+
/** Days in a fiscal week. */
|
|
6
|
+
const DAYS_PER_WEEK = 7;
|
|
7
|
+
/**
|
|
8
|
+
* Return the fiscal year, period and week `value` falls in, for a 52/53-week retail calendar.
|
|
9
|
+
*
|
|
10
|
+
* 52 × 7 is 364 days, so a 52-week fiscal year drifts a day or two against the sun every year
|
|
11
|
+
* and a 53rd week is inserted every five or six to pull it back. Both the drift and the
|
|
12
|
+
* insertion fall out of `calendar` — nothing here is bundled, because there is no single
|
|
13
|
+
* correct retail calendar.
|
|
14
|
+
*
|
|
15
|
+
* - `calendar.pattern` is the weeks-per-period shape of a quarter: `"4-5-4"` (the NRF retail
|
|
16
|
+
* standard), `"4-4-5"` or `"5-4-4"`. Four quarters of 13 weeks make the 52-week year.
|
|
17
|
+
* - **`calendar.yearEndsOn` states the year-end *rule*, by example, not one year's end.**
|
|
18
|
+
* Fiscal years end on that date's weekday, on the occurrence nearest that date's month and
|
|
19
|
+
* day. The NRF's published rule — "the Saturday nearest to January 31"
|
|
20
|
+
* ([NRF 4-5-4 calendar](https://nrf.com/resources/4-5-4-calendar)) — is `"2026-01-31"`, a
|
|
21
|
+
* Saturday falling exactly on January 31. Passing a published year end from a 53-week year
|
|
22
|
+
* instead (`"2024-02-03"`) states a different rule, because that date sits three days off
|
|
23
|
+
* the target the rule is centred on, and yields a different, self-consistent calendar.
|
|
24
|
+
* - `week` is the week of the fiscal year, 1–53, the numbering the NRF publishes. `period` is
|
|
25
|
+
* 1–12. A 53rd week is appended to period 12 — the NRF adds it "to the end of the
|
|
26
|
+
* calendar", which makes a 4-5-4 year's final quarter 4-5-5.
|
|
27
|
+
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF: fiscal 2023
|
|
28
|
+
* runs 2023-01-29 to 2024-02-03. Organisations labelling by the end year should add one.
|
|
29
|
+
* - **`year` is not a unique key for a rule anchored near 1 January.** A 52/53-week year is
|
|
30
|
+
* 364 or 371 days, so it drifts against the calendar, and no label taken from a calendar
|
|
31
|
+
* year survives that for every anchor. Under `yearEndsOn: "2022-12-31"` — the Saturday
|
|
32
|
+
* nearest to 31 December — two consecutive fiscal years both start in 2023 and share the
|
|
33
|
+
* label, and 2020, 2025 and 2031 label no fiscal year at all. Grouping by `year` there
|
|
34
|
+
* merges 104 weeks and drops a year. `"2027-01-02"` states a different rule, the Saturday
|
|
35
|
+
* nearest to 2 January: it too gives 2023 twice, merging 105 weeks, and skips 2018, 2024
|
|
36
|
+
* and 2029. January/February anchors like the NRF's
|
|
37
|
+
* are unaffected. If your rule sits near a year boundary, key on the fiscal year's own start
|
|
38
|
+
* date — which `yearEndsOn` determines, and which is yours to enumerate — not on `year`.
|
|
39
|
+
* GMT does not invent a label the inputs do not fix.
|
|
40
|
+
* - A `yearEndsOn` month-day that does not exist in a year follows Temporal's
|
|
41
|
+
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A
|
|
42
|
+
* "month-end" rule (26 CFR 1.441-2 style) would put a February 28 anchor on February 29 in
|
|
43
|
+
* leap years; this does not — state such a rule with a date that exists every year.
|
|
44
|
+
* - Whether a fiscal year has 52 or 53 weeks is derived from the gap between its own two
|
|
45
|
+
* ends, never assumed from a table.
|
|
46
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
47
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
48
|
+
* - Returns null on invalid input, including an unrecognised pattern or a `yearEndsOn` that
|
|
49
|
+
* is not a plain ISO date. Both share the sentinel with a date that cannot be placed, so
|
|
50
|
+
* check the calendar with `isValidFiscalPattern` and `isValidDate` first to tell a
|
|
51
|
+
* misconfigured calendar apart from an unusable date.
|
|
52
|
+
*
|
|
53
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
54
|
+
* @param calendar { pattern: "4-5-4" | "4-4-5" | "5-4-4", yearEndsOn: ISO date stating the rule }
|
|
55
|
+
* @returns { year, period, week }, or null on invalid input
|
|
56
|
+
*
|
|
57
|
+
* @example getFiscalPeriod("2024-06-15", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 5, week: 19 }
|
|
58
|
+
* @example getFiscalPeriod("2024-02-04", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 1, week: 1 } (NRF fiscal 2024 opens)
|
|
59
|
+
* @example getFiscalPeriod("2024-01-28", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // { year: 2023, period: 12, week: 53 } (the 53rd week of NRF fiscal 2023)
|
|
60
|
+
* @example getFiscalPeriod("2024-03-31", { pattern: "4-4-5", yearEndsOn: "2026-01-31" }) // { year: 2024, period: 3, week: 9 } (the same week, a period later than 4-5-4 puts it)
|
|
61
|
+
* @example getFiscalPeriod("2024-06-15", { pattern: "4-5-5", yearEndsOn: "2026-01-31" }) // null (not one of the three patterns)
|
|
62
|
+
* @example getFiscalPeriod("2024-06-15T12:00:00Z", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // null (a moment, not a calendar date)
|
|
63
|
+
* @example getFiscalPeriod("invalid", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // null
|
|
64
|
+
*/
|
|
65
|
+
export function getFiscalPeriod(value, calendar) {
|
|
66
|
+
try {
|
|
67
|
+
const pattern = calendar?.pattern;
|
|
68
|
+
const yearEndsOn = calendar?.yearEndsOn;
|
|
69
|
+
if (!isValidFiscalPattern(pattern) || !isValidDate(yearEndsOn)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const date = zonelessCalendarDate(value);
|
|
73
|
+
if (!date)
|
|
74
|
+
return null;
|
|
75
|
+
try {
|
|
76
|
+
const fiscalYear = fiscalYearOf(date, Temporal.PlainDate.from(yearEndsOn));
|
|
77
|
+
if (!fiscalYear)
|
|
78
|
+
return null;
|
|
79
|
+
const { start, weeks } = fiscalYear;
|
|
80
|
+
const week = Math.floor(start.until(date, { largestUnit: "day" }).days / DAYS_PER_WEEK) + 1;
|
|
81
|
+
return {
|
|
82
|
+
year: start.year,
|
|
83
|
+
period: fiscalPeriodOfWeek(week, weeks, pattern),
|
|
84
|
+
week,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Never throws (Core Rule 3): a hostile
|
|
93
|
+
// argument is invalid input, not an exception.
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the ISO 8601 week date — week-numbering year, week and weekday — for `value`.
|
|
3
|
+
*
|
|
4
|
+
* Vessel schedules, production plans and retail reports are published by week number, and a
|
|
5
|
+
* week number alone is ambiguous: the week-numbering year is not the calendar year at either
|
|
6
|
+
* end of a year, so all three fields come back together rather than as three calls a caller
|
|
7
|
+
* could combine inconsistently.
|
|
8
|
+
*
|
|
9
|
+
* - `year` is the ISO week-numbering year (`Temporal.PlainDate.yearOfWeek`), which differs
|
|
10
|
+
* from the calendar year for late-December and early-January dates.
|
|
11
|
+
* - `week` is 1–53. ISO week 1 is the week containing the year's first Thursday, so a
|
|
12
|
+
* week-numbering year has 53 weeks roughly every five to six years.
|
|
13
|
+
* - `weekday` is 1 (Monday) through 7 (Sunday).
|
|
14
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. An
|
|
15
|
+
* offset, a `Z` or a bracketed zone makes it a moment rather than a calendar date; convert
|
|
16
|
+
* it in the zone you mean first (`convertUtcToZoned` then `convertZonedToPlainDateTime`),
|
|
17
|
+
* or floor it with `floorToZone`.
|
|
18
|
+
* - Returns null on invalid input.
|
|
19
|
+
*
|
|
20
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
21
|
+
* @returns { year, week, weekday }, or null on invalid input
|
|
22
|
+
*
|
|
23
|
+
* @example getIsoWeekDate("2024-06-15") // { year: 2024, week: 24, weekday: 6 }
|
|
24
|
+
* @example getIsoWeekDate("2027-01-01") // { year: 2026, week: 53, weekday: 5 } (week-year 2026, not 2027)
|
|
25
|
+
* @example getIsoWeekDate("2024-12-30") // { year: 2025, week: 1, weekday: 1 } (a December date in the next week-year)
|
|
26
|
+
* @example getIsoWeekDate("2020-12-31") // { year: 2020, week: 53, weekday: 4 } (a 53-week ISO year)
|
|
27
|
+
* @example getIsoWeekDate("2024-06-15T23:59:59") // { year: 2024, week: 24, weekday: 6 }
|
|
28
|
+
* @example getIsoWeekDate("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
29
|
+
* @example getIsoWeekDate("invalid") // null
|
|
30
|
+
*/
|
|
31
|
+
export declare function getIsoWeekDate(value: string): {
|
|
32
|
+
year: number;
|
|
33
|
+
week: number;
|
|
34
|
+
weekday: number;
|
|
35
|
+
} | null;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { zonelessCalendarDate } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the ISO 8601 week date — week-numbering year, week and weekday — for `value`.
|
|
4
|
+
*
|
|
5
|
+
* Vessel schedules, production plans and retail reports are published by week number, and a
|
|
6
|
+
* week number alone is ambiguous: the week-numbering year is not the calendar year at either
|
|
7
|
+
* end of a year, so all three fields come back together rather than as three calls a caller
|
|
8
|
+
* could combine inconsistently.
|
|
9
|
+
*
|
|
10
|
+
* - `year` is the ISO week-numbering year (`Temporal.PlainDate.yearOfWeek`), which differs
|
|
11
|
+
* from the calendar year for late-December and early-January dates.
|
|
12
|
+
* - `week` is 1–53. ISO week 1 is the week containing the year's first Thursday, so a
|
|
13
|
+
* week-numbering year has 53 weeks roughly every five to six years.
|
|
14
|
+
* - `weekday` is 1 (Monday) through 7 (Sunday).
|
|
15
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. An
|
|
16
|
+
* offset, a `Z` or a bracketed zone makes it a moment rather than a calendar date; convert
|
|
17
|
+
* it in the zone you mean first (`convertUtcToZoned` then `convertZonedToPlainDateTime`),
|
|
18
|
+
* or floor it with `floorToZone`.
|
|
19
|
+
* - Returns null on invalid input.
|
|
20
|
+
*
|
|
21
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
22
|
+
* @returns { year, week, weekday }, or null on invalid input
|
|
23
|
+
*
|
|
24
|
+
* @example getIsoWeekDate("2024-06-15") // { year: 2024, week: 24, weekday: 6 }
|
|
25
|
+
* @example getIsoWeekDate("2027-01-01") // { year: 2026, week: 53, weekday: 5 } (week-year 2026, not 2027)
|
|
26
|
+
* @example getIsoWeekDate("2024-12-30") // { year: 2025, week: 1, weekday: 1 } (a December date in the next week-year)
|
|
27
|
+
* @example getIsoWeekDate("2020-12-31") // { year: 2020, week: 53, weekday: 4 } (a 53-week ISO year)
|
|
28
|
+
* @example getIsoWeekDate("2024-06-15T23:59:59") // { year: 2024, week: 24, weekday: 6 }
|
|
29
|
+
* @example getIsoWeekDate("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
30
|
+
* @example getIsoWeekDate("invalid") // null
|
|
31
|
+
*/
|
|
32
|
+
export function getIsoWeekDate(value) {
|
|
33
|
+
const date = zonelessCalendarDate(value);
|
|
34
|
+
if (!date)
|
|
35
|
+
return null;
|
|
36
|
+
const year = date.yearOfWeek;
|
|
37
|
+
const week = date.weekOfYear;
|
|
38
|
+
if (year === undefined || week === undefined)
|
|
39
|
+
return null;
|
|
40
|
+
return { year, week, weekday: date.dayOfWeek };
|
|
41
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the ISO 8601 ordinal date — calendar year and day of year — for `value`.
|
|
3
|
+
*
|
|
4
|
+
* - `dayOfYear` is 1–365, or 1–366 in a leap year.
|
|
5
|
+
* - `year` is the calendar year, unlike `getIsoWeekDate`'s week-numbering year: an ordinal
|
|
6
|
+
* date never disagrees with the calendar year it is written beside.
|
|
7
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
8
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
9
|
+
* - Returns null on invalid input.
|
|
10
|
+
*
|
|
11
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
12
|
+
* @returns { year, dayOfYear }, or null on invalid input
|
|
13
|
+
*
|
|
14
|
+
* @example getOrdinalDate("2024-01-01") // { year: 2024, dayOfYear: 1 }
|
|
15
|
+
* @example getOrdinalDate("2024-06-15") // { year: 2024, dayOfYear: 167 }
|
|
16
|
+
* @example getOrdinalDate("2024-12-31") // { year: 2024, dayOfYear: 366 } (leap year)
|
|
17
|
+
* @example getOrdinalDate("2023-12-31") // { year: 2023, dayOfYear: 365 }
|
|
18
|
+
* @example getOrdinalDate("2024-03-01") // { year: 2024, dayOfYear: 61 } (after the Feb 29 leap day)
|
|
19
|
+
* @example getOrdinalDate("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
20
|
+
* @example getOrdinalDate("invalid") // null
|
|
21
|
+
*/
|
|
22
|
+
export declare function getOrdinalDate(value: string): {
|
|
23
|
+
year: number;
|
|
24
|
+
dayOfYear: number;
|
|
25
|
+
} | null;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { zonelessCalendarDate } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the ISO 8601 ordinal date — calendar year and day of year — for `value`.
|
|
4
|
+
*
|
|
5
|
+
* - `dayOfYear` is 1–365, or 1–366 in a leap year.
|
|
6
|
+
* - `year` is the calendar year, unlike `getIsoWeekDate`'s week-numbering year: an ordinal
|
|
7
|
+
* date never disagrees with the calendar year it is written beside.
|
|
8
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
9
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
10
|
+
* - Returns null on invalid input.
|
|
11
|
+
*
|
|
12
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
13
|
+
* @returns { year, dayOfYear }, or null on invalid input
|
|
14
|
+
*
|
|
15
|
+
* @example getOrdinalDate("2024-01-01") // { year: 2024, dayOfYear: 1 }
|
|
16
|
+
* @example getOrdinalDate("2024-06-15") // { year: 2024, dayOfYear: 167 }
|
|
17
|
+
* @example getOrdinalDate("2024-12-31") // { year: 2024, dayOfYear: 366 } (leap year)
|
|
18
|
+
* @example getOrdinalDate("2023-12-31") // { year: 2023, dayOfYear: 365 }
|
|
19
|
+
* @example getOrdinalDate("2024-03-01") // { year: 2024, dayOfYear: 61 } (after the Feb 29 leap day)
|
|
20
|
+
* @example getOrdinalDate("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
21
|
+
* @example getOrdinalDate("invalid") // null
|
|
22
|
+
*/
|
|
23
|
+
export function getOrdinalDate(value) {
|
|
24
|
+
const date = zonelessCalendarDate(value);
|
|
25
|
+
if (!date)
|
|
26
|
+
return null;
|
|
27
|
+
return { year: date.year, dayOfYear: date.dayOfYear };
|
|
28
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the quarter `value` falls in, as a year and a quarter number.
|
|
3
|
+
*
|
|
4
|
+
* - `quarter` is 1–4. With no options these are the calendar quarters: Q1 is January to
|
|
5
|
+
* March, and `year` is the calendar year.
|
|
6
|
+
* - `fiscalYearStartMonth` (1–12, default 1) moves the year's first month. A date before it
|
|
7
|
+
* belongs to the previous fiscal year, so `getQuarter("2024-03-31", { fiscalYearStartMonth:
|
|
8
|
+
* 4 })` is Q4 of 2023.
|
|
9
|
+
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF retail
|
|
10
|
+
* convention `getFiscalPeriod` uses. Organisations that label a fiscal year by the calendar
|
|
11
|
+
* year it *ends* in — the US federal government's October-start FY2025 begins in October
|
|
12
|
+
* 2024 — should add one.
|
|
13
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
14
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
15
|
+
* - Returns null on invalid input, including a `fiscalYearStartMonth` that is not an integer
|
|
16
|
+
* from 1 to 12.
|
|
17
|
+
*
|
|
18
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
19
|
+
* @param optionsArg optional: fiscalYearStartMonth (1-12, default 1)
|
|
20
|
+
* @returns { year, quarter }, or null on invalid input
|
|
21
|
+
*
|
|
22
|
+
* @example getQuarter("2024-06-15") // { year: 2024, quarter: 2 }
|
|
23
|
+
* @example getQuarter("2024-10-01") // { year: 2024, quarter: 4 }
|
|
24
|
+
* @example getQuarter("2024-06-15", { fiscalYearStartMonth: 1 }) // { year: 2024, quarter: 2 } (the default, stated)
|
|
25
|
+
* @example getQuarter("2024-04-01", { fiscalYearStartMonth: 4 }) // { year: 2024, quarter: 1 }
|
|
26
|
+
* @example getQuarter("2024-03-31", { fiscalYearStartMonth: 4 }) // { year: 2023, quarter: 4 } (the previous fiscal year)
|
|
27
|
+
* @example getQuarter("2024-06-15", { fiscalYearStartMonth: 13 }) // null
|
|
28
|
+
* @example getQuarter("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
29
|
+
* @example getQuarter("invalid") // null
|
|
30
|
+
*/
|
|
31
|
+
export declare function getQuarter(value: string, optionsArg?: {
|
|
32
|
+
fiscalYearStartMonth?: number;
|
|
33
|
+
}): {
|
|
34
|
+
year: number;
|
|
35
|
+
quarter: number;
|
|
36
|
+
} | null;
|