@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,132 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { Disambiguation, Offset, Overflow } from "../types/index.js";
|
|
3
|
+
type RoundingSmallestUnit = Temporal.SmallestUnit<"day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond">;
|
|
4
|
+
interface ZonedRoundTo {
|
|
5
|
+
smallestUnit: RoundingSmallestUnit;
|
|
6
|
+
roundingIncrement?: number;
|
|
7
|
+
roundingMode?: Temporal.RoundingMode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* `PlainDate#toZonedDateTime(timeZone)` (start of day) or
|
|
11
|
+
* `PlainDateTime#toZonedDateTime(timeZone, { disambiguation })`, correct at the range limits and
|
|
12
|
+
* (start of day) before 1847.
|
|
13
|
+
*
|
|
14
|
+
* @param plain the date (resolved to its start of day) or date-time to place in `timeZone`
|
|
15
|
+
* @param timeZone IANA identifier, offset time zone, or RFC 9557 string carrying one
|
|
16
|
+
* @param disambiguation Temporal disambiguation for a PlainDateTime (ignored for a PlainDate)
|
|
17
|
+
* @returns the resolved Temporal.ZonedDateTime; throws where TC39 Temporal throws
|
|
18
|
+
*/
|
|
19
|
+
export declare function plainToZoned(plain: Temporal.PlainDate | Temporal.PlainDateTime, timeZone: string, disambiguation?: Disambiguation): Temporal.ZonedDateTime;
|
|
20
|
+
/**
|
|
21
|
+
* `ZonedDateTime#startOfDay`, correct at the range limits and before 1847.
|
|
22
|
+
*
|
|
23
|
+
* @param zoned the value whose local day to start
|
|
24
|
+
* @returns the first valid wall-clock time of that day; throws where TC39 Temporal throws
|
|
25
|
+
*/
|
|
26
|
+
export declare function zonedStartOfDay(zoned: Temporal.ZonedDateTime): Temporal.ZonedDateTime;
|
|
27
|
+
/**
|
|
28
|
+
* `ZonedDateTime#withPlainTime`, correct at the range limits and (start of day) before 1847.
|
|
29
|
+
*
|
|
30
|
+
* @param zoned the value whose local date to keep
|
|
31
|
+
* @param time the new wall-clock time; omitted means the start of the day
|
|
32
|
+
* @returns the resolved Temporal.ZonedDateTime; throws where TC39 Temporal throws
|
|
33
|
+
*/
|
|
34
|
+
export declare function zonedWithPlainTime(zoned: Temporal.ZonedDateTime, time?: Temporal.PlainTime | Temporal.PlainTimeLike | string): Temporal.ZonedDateTime;
|
|
35
|
+
/**
|
|
36
|
+
* `ZonedDateTime#hoursInDay`, correct at the range limits and before 1847.
|
|
37
|
+
*
|
|
38
|
+
* @param zoned the value whose local day to measure
|
|
39
|
+
* @returns hours from this day's start to the next day's start; throws where TC39 Temporal throws
|
|
40
|
+
*/
|
|
41
|
+
export declare function zonedHoursInDay(zoned: Temporal.ZonedDateTime): number;
|
|
42
|
+
/**
|
|
43
|
+
* `ZonedDateTime#getTimeZoneTransition("next")`, correct at the range limits and before 1847.
|
|
44
|
+
*
|
|
45
|
+
* - Before 1847-01-01 the polyfill never searches (defect 3), so a named zone whose offset there
|
|
46
|
+
* differs from its offset at 1847-01-01 has its transition found by bisection first.
|
|
47
|
+
* - The polyfill's forward scan gives up once a two-week step would pass the maximum instant, so a
|
|
48
|
+
* `null` within its three-year horizon of the maximum is re-checked by walking back from the
|
|
49
|
+
* maximum with `getTimeZoneTransition("previous")`, which scans correctly there.
|
|
50
|
+
*
|
|
51
|
+
* @param zoned the instant to search after (exclusive)
|
|
52
|
+
* @returns the next transition, or null when there is none before the maximum instant
|
|
53
|
+
*/
|
|
54
|
+
export declare function zonedNextTransition(zoned: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null;
|
|
55
|
+
/**
|
|
56
|
+
* `ZonedDateTime#getTimeZoneTransition("previous")`, correct before 1847.
|
|
57
|
+
*
|
|
58
|
+
* The polyfill stops looking at 1847-01-01 (defect 3), so when it finds nothing in a named zone the
|
|
59
|
+
* span from the minimum instant to the floor is checked by comparing offsets and bisecting.
|
|
60
|
+
*
|
|
61
|
+
* @param zoned the instant to search before (exclusive)
|
|
62
|
+
* @returns the previous transition, or null when there is none
|
|
63
|
+
*/
|
|
64
|
+
export declare function zonedPreviousTransition(zoned: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null;
|
|
65
|
+
/**
|
|
66
|
+
* `ZonedDateTime#add`, correct at the range limits and in calendars the polyfill gets wrong.
|
|
67
|
+
*
|
|
68
|
+
* @param zoned the starting value
|
|
69
|
+
* @param duration the duration to add
|
|
70
|
+
* @param options Temporal `overflow` for the calendar part
|
|
71
|
+
* @returns the sum; throws where TC39 Temporal throws
|
|
72
|
+
*/
|
|
73
|
+
export declare function addToZoned(zoned: Temporal.ZonedDateTime, duration: Temporal.Duration | Temporal.DurationLike | string, options?: {
|
|
74
|
+
overflow?: Overflow;
|
|
75
|
+
}): Temporal.ZonedDateTime;
|
|
76
|
+
/**
|
|
77
|
+
* `ZonedDateTime#subtract`, correct at the range limits.
|
|
78
|
+
*
|
|
79
|
+
* @param zoned the starting value
|
|
80
|
+
* @param duration the duration to subtract
|
|
81
|
+
* @param options Temporal `overflow` for the calendar part
|
|
82
|
+
* @returns the difference; throws where TC39 Temporal throws
|
|
83
|
+
*/
|
|
84
|
+
export declare function subtractFromZoned(zoned: Temporal.ZonedDateTime, duration: Temporal.Duration | Temporal.DurationLike | string, options?: {
|
|
85
|
+
overflow?: Overflow;
|
|
86
|
+
}): Temporal.ZonedDateTime;
|
|
87
|
+
/**
|
|
88
|
+
* `addToZoned` / `subtractFromZoned` with a caller-chosen `disambiguation` for the intermediate
|
|
89
|
+
* wall-clock date-time — TC39 Temporal §6.5.5 AddZonedDateTime with the "compatible" argument of
|
|
90
|
+
* its `GetEpochNanosecondsFor` step replaced by `disambiguation`.
|
|
91
|
+
*
|
|
92
|
+
* - The date portion (years, months, weeks, days) is added to the wall-clock date, keeping the
|
|
93
|
+
* wall-clock time. That intermediate date-time is resolved with `disambiguation` whenever it is
|
|
94
|
+
* not a single instant: in a fall-back overlap "earlier"/"compatible" take the earlier instant and
|
|
95
|
+
* "later" the later one; in a spring-forward gap "earlier" shifts it back by the gap length and
|
|
96
|
+
* "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
|
|
97
|
+
* - The time portion is then added in exact time and is never re-resolved.
|
|
98
|
+
* - With no date portion, the whole duration is exact time and `disambiguation` never applies.
|
|
99
|
+
*
|
|
100
|
+
* @param zoned the starting value
|
|
101
|
+
* @param duration the duration to add or subtract
|
|
102
|
+
* @param sign 1 to add, -1 to subtract
|
|
103
|
+
* @param options Temporal `overflow` for the calendar part and `disambiguation`
|
|
104
|
+
* @returns the result; throws where TC39 Temporal throws, or when "reject" meets a gap or overlap
|
|
105
|
+
*/
|
|
106
|
+
export declare function addToZonedDisambiguated(zoned: Temporal.ZonedDateTime, duration: Temporal.Duration | Temporal.DurationLike | string, sign: 1 | -1, options: {
|
|
107
|
+
overflow?: Overflow;
|
|
108
|
+
disambiguation: Disambiguation;
|
|
109
|
+
}): Temporal.ZonedDateTime;
|
|
110
|
+
interface ZonedWithOptions {
|
|
111
|
+
overflow?: Overflow;
|
|
112
|
+
disambiguation?: Disambiguation;
|
|
113
|
+
offset?: Offset;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* `ZonedDateTime#with`, correct at the range limits.
|
|
117
|
+
*
|
|
118
|
+
* @param zoned the value to change
|
|
119
|
+
* @param fields the date/time (and optional offset) fields to set
|
|
120
|
+
* @param options Temporal `overflow` / `disambiguation` / `offset` (default `"prefer"`)
|
|
121
|
+
* @returns the changed value; throws where TC39 Temporal throws
|
|
122
|
+
*/
|
|
123
|
+
export declare function withZonedFields(zoned: Temporal.ZonedDateTime, fields: Temporal.ZonedDateTimeLike, options?: ZonedWithOptions): Temporal.ZonedDateTime;
|
|
124
|
+
/**
|
|
125
|
+
* `ZonedDateTime#round`, correct at the range limits and, by day, before 1847.
|
|
126
|
+
*
|
|
127
|
+
* @param zoned the value to round
|
|
128
|
+
* @param roundTo Temporal `smallestUnit` (day or smaller) / `roundingIncrement` / `roundingMode`
|
|
129
|
+
* @returns the rounded value; throws where TC39 Temporal throws
|
|
130
|
+
*/
|
|
131
|
+
export declare function roundZonedDateTime(zoned: Temporal.ZonedDateTime, roundTo: ZonedRoundTo): Temporal.ZonedDateTime;
|
|
132
|
+
export {};
|
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { MAX_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
|
|
3
|
+
import { calendarDateAdd, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
+
import { epochNanosecondsFor, interpretISODateTimeOffset, isBeforePolyfillTransitionSearch, isNamedTimeZone, isNearRangeEdge, isValidEpoch, MAX_TRANSITIONS_BEFORE_MAXIMUM, missedNextTransition, missedPreviousTransition, NEXT_TRANSITION_HORIZON_NANOSECONDS, startOfDayEpochNanoseconds, timeZoneIdOf, utcOffsetStringNanoseconds, } from "./zonedWallClock.js";
|
|
5
|
+
/*
|
|
6
|
+
* Polyfill-first wrappers for the Temporal operations that resolve a wall clock or a start of day
|
|
7
|
+
* inside `@js-temporal/polyfill` 0.5.1, and so inherit its range-limit defects. See the note at the
|
|
8
|
+
* top of `./zonedWallClock.ts` (defect 1: fixed on upstream main by 05ce7a3 at the maximum and
|
|
9
|
+
* 95237e0 at the minimum, both unreleased; defect 2 is unfixed upstream): each fallback is removed
|
|
10
|
+
* once a polyfill release fixing its defect at BOTH limits is GMT's dependency floor. 05ce7a3 alone
|
|
11
|
+
* never retires the defect-1 fallbacks, because the `zoned.A` canary's `min.*` probes still fail
|
|
12
|
+
* with it.
|
|
13
|
+
*
|
|
14
|
+
* Every wrapper returns the polyfill's own result whenever it has one, and re-throws the polyfill's
|
|
15
|
+
* own error unless the zone is a named, non-UTC zone and the wall clock being resolved lies within
|
|
16
|
+
* a month of either range limit — the only inputs either defect reaches.
|
|
17
|
+
*
|
|
18
|
+
* Defect 3 (the transition search floored at 1847-01-01) returns a wrong value instead of throwing,
|
|
19
|
+
* so the transition and start-of-day wrappers check for it first, and only for a named zone and an
|
|
20
|
+
* instant or local date before that floor (`needsOwnStartOfDay`); everything later goes straight to
|
|
21
|
+
* the polyfill. Retired with the `zoned.E` canary group.
|
|
22
|
+
*/
|
|
23
|
+
const NANOSECONDS_PER_HOUR = 3_600_000_000_000;
|
|
24
|
+
const DISAMBIGUATION_PROBE = new Temporal.PlainDateTime(2000, 1, 1);
|
|
25
|
+
/** An ISO date far from the limits, used only to validate an `overflow` option. */
|
|
26
|
+
const OVERFLOW_PROBE = new Temporal.PlainDate(2000, 1, 1);
|
|
27
|
+
/** Re-throws `error` unless `recover` computes a TC39 result (it returns null when out of scope). */
|
|
28
|
+
function recoverAtRangeEdge(error, recover) {
|
|
29
|
+
const recovered = recover();
|
|
30
|
+
if (recovered === null) {
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
return recovered;
|
|
34
|
+
}
|
|
35
|
+
function isAtRangeEdge(timeZone, date) {
|
|
36
|
+
return isNamedTimeZone(timeZone) && isNearRangeEdge(date);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* True when the polyfill's `GetStartOfDay` may return a valid-looking wrong value for this date (or
|
|
40
|
+
* this zoned value's date) because a transition skipping its midnight lies before the polyfill's
|
|
41
|
+
* 1847-01-01 transition search floor (defect 3).
|
|
42
|
+
*/
|
|
43
|
+
function needsOwnStartOfDay(timeZone, value) {
|
|
44
|
+
return isNamedTimeZone(timeZone) && isBeforePolyfillTransitionSearch(value);
|
|
45
|
+
}
|
|
46
|
+
function inZoneOf(epochNanoseconds, zoned) {
|
|
47
|
+
return new Temporal.ZonedDateTime(epochNanoseconds, zoned.timeZoneId, zoned.calendarId);
|
|
48
|
+
}
|
|
49
|
+
// ---------------------------------------------------------------------------------------------
|
|
50
|
+
// PlainDate / PlainDateTime -> ZonedDateTime
|
|
51
|
+
// ---------------------------------------------------------------------------------------------
|
|
52
|
+
function plainToZonedAtEdge(plain, timeZoneLike, disambiguation) {
|
|
53
|
+
let timeZone;
|
|
54
|
+
try {
|
|
55
|
+
timeZone = timeZoneIdOf(timeZoneLike);
|
|
56
|
+
DISAMBIGUATION_PROBE.toZonedDateTime("UTC", { disambiguation });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const isDate = plain instanceof Temporal.PlainDate;
|
|
62
|
+
const date = isDate ? plain : plain.toPlainDate();
|
|
63
|
+
if (!isAtRangeEdge(timeZone, date)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (isDate) {
|
|
67
|
+
return plainDateFromOwnStartOfDay(plain, timeZone);
|
|
68
|
+
}
|
|
69
|
+
return new Temporal.ZonedDateTime(epochNanosecondsFor(timeZone, plain, disambiguation ?? "compatible"), timeZone, plain.calendarId);
|
|
70
|
+
}
|
|
71
|
+
function plainDateFromOwnStartOfDay(date, timeZone) {
|
|
72
|
+
return new Temporal.ZonedDateTime(startOfDayEpochNanoseconds(timeZone, date), timeZone, date.calendarId);
|
|
73
|
+
}
|
|
74
|
+
/** A PlainDate's start of day before the polyfill's transition search floor, or null. */
|
|
75
|
+
function plainDateBeforeTransitionSearch(date, timeZoneLike) {
|
|
76
|
+
if (!isBeforePolyfillTransitionSearch(date))
|
|
77
|
+
return null;
|
|
78
|
+
let timeZone;
|
|
79
|
+
try {
|
|
80
|
+
timeZone = timeZoneIdOf(timeZoneLike);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return isNamedTimeZone(timeZone)
|
|
86
|
+
? plainDateFromOwnStartOfDay(date, timeZone)
|
|
87
|
+
: null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* `PlainDate#toZonedDateTime(timeZone)` (start of day) or
|
|
91
|
+
* `PlainDateTime#toZonedDateTime(timeZone, { disambiguation })`, correct at the range limits and
|
|
92
|
+
* (start of day) before 1847.
|
|
93
|
+
*
|
|
94
|
+
* @param plain the date (resolved to its start of day) or date-time to place in `timeZone`
|
|
95
|
+
* @param timeZone IANA identifier, offset time zone, or RFC 9557 string carrying one
|
|
96
|
+
* @param disambiguation Temporal disambiguation for a PlainDateTime (ignored for a PlainDate)
|
|
97
|
+
* @returns the resolved Temporal.ZonedDateTime; throws where TC39 Temporal throws
|
|
98
|
+
*/
|
|
99
|
+
export function plainToZoned(plain, timeZone, disambiguation) {
|
|
100
|
+
if (plain instanceof Temporal.PlainDate) {
|
|
101
|
+
const own = plainDateBeforeTransitionSearch(plain, timeZone);
|
|
102
|
+
if (own !== null) {
|
|
103
|
+
return own;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
return plain instanceof Temporal.PlainDate
|
|
108
|
+
? plain.toZonedDateTime(timeZone)
|
|
109
|
+
: plain.toZonedDateTime(timeZone, { disambiguation });
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
return recoverAtRangeEdge(error, () => plainToZonedAtEdge(plain, timeZone, disambiguation));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ---------------------------------------------------------------------------------------------
|
|
116
|
+
// Start of day, withPlainTime, hoursInDay
|
|
117
|
+
// ---------------------------------------------------------------------------------------------
|
|
118
|
+
function startOfDayFromOwn(zoned) {
|
|
119
|
+
return inZoneOf(startOfDayEpochNanoseconds(zoned.timeZoneId, zoned.toPlainDate()), zoned);
|
|
120
|
+
}
|
|
121
|
+
function startOfDayAtEdge(zoned) {
|
|
122
|
+
return isAtRangeEdge(zoned.timeZoneId, zoned.toPlainDate())
|
|
123
|
+
? startOfDayFromOwn(zoned)
|
|
124
|
+
: null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* `ZonedDateTime#startOfDay`, correct at the range limits and before 1847.
|
|
128
|
+
*
|
|
129
|
+
* @param zoned the value whose local day to start
|
|
130
|
+
* @returns the first valid wall-clock time of that day; throws where TC39 Temporal throws
|
|
131
|
+
*/
|
|
132
|
+
export function zonedStartOfDay(zoned) {
|
|
133
|
+
if (needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
134
|
+
return startOfDayFromOwn(zoned);
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
return zoned.startOfDay();
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
return recoverAtRangeEdge(error, () => startOfDayAtEdge(zoned));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function withPlainTimeAtEdge(zoned, time) {
|
|
144
|
+
if (time === undefined) {
|
|
145
|
+
return startOfDayAtEdge(zoned);
|
|
146
|
+
}
|
|
147
|
+
const date = zoned.toPlainDate();
|
|
148
|
+
let wall;
|
|
149
|
+
try {
|
|
150
|
+
wall = date.toPlainDateTime(Temporal.PlainTime.from(time));
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
if (!isAtRangeEdge(zoned.timeZoneId, date)) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
return inZoneOf(epochNanosecondsFor(zoned.timeZoneId, wall, "compatible"), zoned);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* `ZonedDateTime#withPlainTime`, correct at the range limits and (start of day) before 1847.
|
|
162
|
+
*
|
|
163
|
+
* @param zoned the value whose local date to keep
|
|
164
|
+
* @param time the new wall-clock time; omitted means the start of the day
|
|
165
|
+
* @returns the resolved Temporal.ZonedDateTime; throws where TC39 Temporal throws
|
|
166
|
+
*/
|
|
167
|
+
export function zonedWithPlainTime(zoned, time) {
|
|
168
|
+
if (time === undefined && needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
169
|
+
return startOfDayFromOwn(zoned);
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
return zoned.withPlainTime(time);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
return recoverAtRangeEdge(error, () => withPlainTimeAtEdge(zoned, time));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function hoursInDayAtEdge(zoned) {
|
|
179
|
+
return isAtRangeEdge(zoned.timeZoneId, zoned.toPlainDate())
|
|
180
|
+
? hoursInDayFromOwnStartOfDay(zoned)
|
|
181
|
+
: null;
|
|
182
|
+
}
|
|
183
|
+
function hoursInDayFromOwnStartOfDay(zoned) {
|
|
184
|
+
const date = zoned.toPlainDate();
|
|
185
|
+
const start = startOfDayEpochNanoseconds(zoned.timeZoneId, date);
|
|
186
|
+
// Past the last representable date `add` throws, as TC39 `GetStartOfDay` does for that day.
|
|
187
|
+
const end = startOfDayEpochNanoseconds(zoned.timeZoneId, date.add({ days: 1 }));
|
|
188
|
+
return Number(end - start) / NANOSECONDS_PER_HOUR;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* `ZonedDateTime#hoursInDay`, correct at the range limits and before 1847.
|
|
192
|
+
*
|
|
193
|
+
* @param zoned the value whose local day to measure
|
|
194
|
+
* @returns hours from this day's start to the next day's start; throws where TC39 Temporal throws
|
|
195
|
+
*/
|
|
196
|
+
export function zonedHoursInDay(zoned) {
|
|
197
|
+
if (needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
198
|
+
return hoursInDayFromOwnStartOfDay(zoned);
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
return zoned.hoursInDay;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
return recoverAtRangeEdge(error, () => hoursInDayAtEdge(zoned));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// ---------------------------------------------------------------------------------------------
|
|
208
|
+
// Next transition
|
|
209
|
+
// ---------------------------------------------------------------------------------------------
|
|
210
|
+
/** The earliest transition after `zoned`, found by walking back from the maximum instant. */
|
|
211
|
+
function earliestTransitionBeforeMaximum(zoned) {
|
|
212
|
+
if (zoned.epochNanoseconds >= MAX_EPOCH_NANOSECONDS) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
const maximum = inZoneOf(MAX_EPOCH_NANOSECONDS, zoned);
|
|
216
|
+
const justBeforeMaximum = inZoneOf(MAX_EPOCH_NANOSECONDS - 1n, zoned);
|
|
217
|
+
// `previous` is strict, so a transition exactly at the maximum is checked directly.
|
|
218
|
+
let earliest = justBeforeMaximum.offsetNanoseconds === maximum.offsetNanoseconds
|
|
219
|
+
? null
|
|
220
|
+
: maximum;
|
|
221
|
+
let cursor = maximum.getTimeZoneTransition("previous");
|
|
222
|
+
for (let step = 0; cursor !== null && cursor.epochNanoseconds > zoned.epochNanoseconds; step++) {
|
|
223
|
+
if (step >= MAX_TRANSITIONS_BEFORE_MAXIMUM) {
|
|
224
|
+
throw new RangeError(`Too many transitions in ${zoned.timeZoneId} before the maximum instant`);
|
|
225
|
+
}
|
|
226
|
+
earliest = cursor;
|
|
227
|
+
cursor = cursor.getTimeZoneTransition("previous");
|
|
228
|
+
}
|
|
229
|
+
return earliest;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* `ZonedDateTime#getTimeZoneTransition("next")`, correct at the range limits and before 1847.
|
|
233
|
+
*
|
|
234
|
+
* - Before 1847-01-01 the polyfill never searches (defect 3), so a named zone whose offset there
|
|
235
|
+
* differs from its offset at 1847-01-01 has its transition found by bisection first.
|
|
236
|
+
* - The polyfill's forward scan gives up once a two-week step would pass the maximum instant, so a
|
|
237
|
+
* `null` within its three-year horizon of the maximum is re-checked by walking back from the
|
|
238
|
+
* maximum with `getTimeZoneTransition("previous")`, which scans correctly there.
|
|
239
|
+
*
|
|
240
|
+
* @param zoned the instant to search after (exclusive)
|
|
241
|
+
* @returns the next transition, or null when there is none before the maximum instant
|
|
242
|
+
*/
|
|
243
|
+
export function zonedNextTransition(zoned) {
|
|
244
|
+
if (isNamedTimeZone(zoned.timeZoneId)) {
|
|
245
|
+
const missed = missedNextTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
246
|
+
if (missed !== null) {
|
|
247
|
+
return inZoneOf(missed, zoned);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
const next = zoned.getTimeZoneTransition("next");
|
|
251
|
+
if (next !== null ||
|
|
252
|
+
!isNamedTimeZone(zoned.timeZoneId) ||
|
|
253
|
+
MAX_EPOCH_NANOSECONDS - zoned.epochNanoseconds >
|
|
254
|
+
NEXT_TRANSITION_HORIZON_NANOSECONDS) {
|
|
255
|
+
return next;
|
|
256
|
+
}
|
|
257
|
+
return earliestTransitionBeforeMaximum(zoned);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* `ZonedDateTime#getTimeZoneTransition("previous")`, correct before 1847.
|
|
261
|
+
*
|
|
262
|
+
* The polyfill stops looking at 1847-01-01 (defect 3), so when it finds nothing in a named zone the
|
|
263
|
+
* span from the minimum instant to the floor is checked by comparing offsets and bisecting.
|
|
264
|
+
*
|
|
265
|
+
* @param zoned the instant to search before (exclusive)
|
|
266
|
+
* @returns the previous transition, or null when there is none
|
|
267
|
+
*/
|
|
268
|
+
export function zonedPreviousTransition(zoned) {
|
|
269
|
+
const previous = zoned.getTimeZoneTransition("previous");
|
|
270
|
+
if (previous !== null || !isNamedTimeZone(zoned.timeZoneId)) {
|
|
271
|
+
return previous;
|
|
272
|
+
}
|
|
273
|
+
const missed = missedPreviousTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
274
|
+
return missed === null ? null : inZoneOf(missed, zoned);
|
|
275
|
+
}
|
|
276
|
+
// ---------------------------------------------------------------------------------------------
|
|
277
|
+
// add / subtract
|
|
278
|
+
// ---------------------------------------------------------------------------------------------
|
|
279
|
+
function hasDateUnits(duration) {
|
|
280
|
+
return (duration.years !== 0 ||
|
|
281
|
+
duration.months !== 0 ||
|
|
282
|
+
duration.weeks !== 0 ||
|
|
283
|
+
duration.days !== 0);
|
|
284
|
+
}
|
|
285
|
+
function timeUnitsNanoseconds(duration) {
|
|
286
|
+
return (BigInt(duration.hours) * 3600000000000n +
|
|
287
|
+
BigInt(duration.minutes) * 60000000000n +
|
|
288
|
+
BigInt(duration.seconds) * 1000000000n +
|
|
289
|
+
BigInt(duration.milliseconds) * 1000000n +
|
|
290
|
+
BigInt(duration.microseconds) * 1000n +
|
|
291
|
+
BigInt(duration.nanoseconds));
|
|
292
|
+
}
|
|
293
|
+
/** TC39 `AddZonedDateTime` for a duration with calendar units, at the range limits. */
|
|
294
|
+
function addAtEdge(zoned, durationLike, overflow, sign) {
|
|
295
|
+
let duration;
|
|
296
|
+
let wall;
|
|
297
|
+
try {
|
|
298
|
+
const parsed = Temporal.Duration.from(durationLike);
|
|
299
|
+
duration = sign === 1 ? parsed : parsed.negated();
|
|
300
|
+
const start = zoned.toPlainDateTime();
|
|
301
|
+
const { years, months, weeks, days } = duration;
|
|
302
|
+
wall = calendarDateAdd(start.toPlainDate(), { years, months, weeks, days }, overflow === undefined ? "constrain" : overflow).toPlainDateTime(start.toPlainTime());
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
307
|
+
// Without calendar units the sum is exact-time arithmetic, which the polyfill gets right.
|
|
308
|
+
if (!hasDateUnits(duration) ||
|
|
309
|
+
!isAtRangeEdge(zoned.timeZoneId, wall.toPlainDate())) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
const result = epochNanosecondsFor(zoned.timeZoneId, wall, "compatible") +
|
|
313
|
+
timeUnitsNanoseconds(duration);
|
|
314
|
+
if (!isValidEpoch(result)) {
|
|
315
|
+
throw new RangeError(`${zoned.toString()} + ${duration.toString()} is outside the supported range`);
|
|
316
|
+
}
|
|
317
|
+
return inZoneOf(result, zoned);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* TC39 §6.5.5 `AddZonedDateTime` for a signed duration with calendar units: `CalendarDateAdd` runs
|
|
321
|
+
* in `calendarDateAdd` (the Temporal compat layer, CORE-6 S5); the intermediate wall clock (added
|
|
322
|
+
* date, original time) resolves with `GetEpochNanosecondsFor(timeZone, dateTime, disambiguation)`
|
|
323
|
+
* through GMT's own `plainToZoned`, so a gap or an overlap landing honours `disambiguation`; the
|
|
324
|
+
* time units are then added in exact time and never re-resolved.
|
|
325
|
+
*/
|
|
326
|
+
function addDateThenTime(zoned, duration, overflow, disambiguation) {
|
|
327
|
+
// Validates `overflow` exactly as ZonedDateTime#add does.
|
|
328
|
+
OVERFLOW_PROBE.add({ days: 0 }, { overflow });
|
|
329
|
+
const wall = zoned.toPlainDateTime();
|
|
330
|
+
const { years, months, weeks, days } = duration;
|
|
331
|
+
const date = calendarDateAdd(wall.toPlainDate(), { years, months, weeks, days }, overflow === undefined ? "constrain" : overflow);
|
|
332
|
+
const intermediate = plainToZoned(date.toPlainDateTime(wall.toPlainTime()), zoned.timeZoneId, disambiguation);
|
|
333
|
+
const result = intermediate.epochNanoseconds + timeUnitsNanoseconds(duration);
|
|
334
|
+
if (!isValidEpoch(result)) {
|
|
335
|
+
throw new RangeError(`${zoned.toString()} + ${duration.toString()} is outside the supported range`);
|
|
336
|
+
}
|
|
337
|
+
return inZoneOf(result, zoned);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* `AddZonedDateTime` through the Temporal compat layer, or null when `zoned`'s calendar needs no
|
|
341
|
+
* compat or the duration has no calendar units.
|
|
342
|
+
*/
|
|
343
|
+
function addWithCalendarCompat(zoned, durationLike, overflow, sign) {
|
|
344
|
+
if (!isCalendarArithmeticCompatNeeded(zoned.calendarId)) {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
const parsed = Temporal.Duration.from(durationLike);
|
|
348
|
+
const duration = sign === 1 ? parsed : parsed.negated();
|
|
349
|
+
if (!hasDateUnits(duration)) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
return addDateThenTime(zoned, duration, overflow, "compatible");
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* `ZonedDateTime#add`, correct at the range limits and in calendars the polyfill gets wrong.
|
|
356
|
+
*
|
|
357
|
+
* @param zoned the starting value
|
|
358
|
+
* @param duration the duration to add
|
|
359
|
+
* @param options Temporal `overflow` for the calendar part
|
|
360
|
+
* @returns the sum; throws where TC39 Temporal throws
|
|
361
|
+
*/
|
|
362
|
+
export function addToZoned(zoned, duration, options) {
|
|
363
|
+
const viaCompat = addWithCalendarCompat(zoned, duration, options?.overflow, 1);
|
|
364
|
+
if (viaCompat !== null) {
|
|
365
|
+
return viaCompat;
|
|
366
|
+
}
|
|
367
|
+
try {
|
|
368
|
+
return zoned.add(duration, options);
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
return recoverAtRangeEdge(error, () => addAtEdge(zoned, duration, options?.overflow, 1));
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* `ZonedDateTime#subtract`, correct at the range limits.
|
|
376
|
+
*
|
|
377
|
+
* @param zoned the starting value
|
|
378
|
+
* @param duration the duration to subtract
|
|
379
|
+
* @param options Temporal `overflow` for the calendar part
|
|
380
|
+
* @returns the difference; throws where TC39 Temporal throws
|
|
381
|
+
*/
|
|
382
|
+
export function subtractFromZoned(zoned, duration, options) {
|
|
383
|
+
const viaCompat = addWithCalendarCompat(zoned, duration, options?.overflow, -1);
|
|
384
|
+
if (viaCompat !== null) {
|
|
385
|
+
return viaCompat;
|
|
386
|
+
}
|
|
387
|
+
try {
|
|
388
|
+
return zoned.subtract(duration, options);
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
return recoverAtRangeEdge(error, () => addAtEdge(zoned, duration, options?.overflow, -1));
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* `addToZoned` / `subtractFromZoned` with a caller-chosen `disambiguation` for the intermediate
|
|
396
|
+
* wall-clock date-time — TC39 Temporal §6.5.5 AddZonedDateTime with the "compatible" argument of
|
|
397
|
+
* its `GetEpochNanosecondsFor` step replaced by `disambiguation`.
|
|
398
|
+
*
|
|
399
|
+
* - The date portion (years, months, weeks, days) is added to the wall-clock date, keeping the
|
|
400
|
+
* wall-clock time. That intermediate date-time is resolved with `disambiguation` whenever it is
|
|
401
|
+
* not a single instant: in a fall-back overlap "earlier"/"compatible" take the earlier instant and
|
|
402
|
+
* "later" the later one; in a spring-forward gap "earlier" shifts it back by the gap length and
|
|
403
|
+
* "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
|
|
404
|
+
* - The time portion is then added in exact time and is never re-resolved.
|
|
405
|
+
* - With no date portion, the whole duration is exact time and `disambiguation` never applies.
|
|
406
|
+
*
|
|
407
|
+
* @param zoned the starting value
|
|
408
|
+
* @param duration the duration to add or subtract
|
|
409
|
+
* @param sign 1 to add, -1 to subtract
|
|
410
|
+
* @param options Temporal `overflow` for the calendar part and `disambiguation`
|
|
411
|
+
* @returns the result; throws where TC39 Temporal throws, or when "reject" meets a gap or overlap
|
|
412
|
+
*/
|
|
413
|
+
export function addToZonedDisambiguated(zoned, duration, sign, options) {
|
|
414
|
+
const { overflow, disambiguation } = options;
|
|
415
|
+
// Validates `disambiguation` even when no wall clock is resolved below.
|
|
416
|
+
DISAMBIGUATION_PROBE.toZonedDateTime("UTC", { disambiguation });
|
|
417
|
+
const parsed = Temporal.Duration.from(duration);
|
|
418
|
+
if (disambiguation === "compatible" || !hasDateUnits(parsed)) {
|
|
419
|
+
const step = sign === 1 ? addToZoned : subtractFromZoned;
|
|
420
|
+
return step(zoned, parsed, { overflow });
|
|
421
|
+
}
|
|
422
|
+
return addDateThenTime(zoned, sign === 1 ? parsed : parsed.negated(), overflow, disambiguation);
|
|
423
|
+
}
|
|
424
|
+
/** TC39 `ZonedDateTime#with` at the range limits. */
|
|
425
|
+
function withAtEdge(zoned, fields, options) {
|
|
426
|
+
let wall;
|
|
427
|
+
let offset;
|
|
428
|
+
try {
|
|
429
|
+
Temporal.ZonedDateTime.from(zoned, options);
|
|
430
|
+
const { offset: offsetString, ...dateTimeFields } = fields;
|
|
431
|
+
wall = zoned
|
|
432
|
+
.toPlainDateTime()
|
|
433
|
+
.with(dateTimeFields, { overflow: options?.overflow });
|
|
434
|
+
offset = {
|
|
435
|
+
nanoseconds: offsetString === undefined
|
|
436
|
+
? BigInt(zoned.offsetNanoseconds)
|
|
437
|
+
: utcOffsetStringNanoseconds(offsetString),
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
return null;
|
|
442
|
+
}
|
|
443
|
+
if (!isAtRangeEdge(zoned.timeZoneId, wall.toPlainDate())) {
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, options?.disambiguation === undefined
|
|
447
|
+
? "compatible"
|
|
448
|
+
: options.disambiguation, options?.offset === undefined ? "prefer" : options.offset, false);
|
|
449
|
+
return inZoneOf(epoch, zoned);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* `ZonedDateTime#with`, correct at the range limits.
|
|
453
|
+
*
|
|
454
|
+
* @param zoned the value to change
|
|
455
|
+
* @param fields the date/time (and optional offset) fields to set
|
|
456
|
+
* @param options Temporal `overflow` / `disambiguation` / `offset` (default `"prefer"`)
|
|
457
|
+
* @returns the changed value; throws where TC39 Temporal throws
|
|
458
|
+
*/
|
|
459
|
+
export function withZonedFields(zoned, fields, options) {
|
|
460
|
+
try {
|
|
461
|
+
return zoned.with(fields, options);
|
|
462
|
+
}
|
|
463
|
+
catch (error) {
|
|
464
|
+
return recoverAtRangeEdge(error, () => withAtEdge(zoned, fields, options));
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// ---------------------------------------------------------------------------------------------
|
|
468
|
+
// round
|
|
469
|
+
// ---------------------------------------------------------------------------------------------
|
|
470
|
+
/** Rounding modes that never move a non-negative progress past the start of the day. */
|
|
471
|
+
const ROUNDS_TOWARD_START = new Set([
|
|
472
|
+
"floor",
|
|
473
|
+
"trunc",
|
|
474
|
+
]);
|
|
475
|
+
/** Rounding modes that move any positive progress to the start of the next day. */
|
|
476
|
+
const ROUNDS_TOWARD_END = new Set([
|
|
477
|
+
"ceil",
|
|
478
|
+
"expand",
|
|
479
|
+
]);
|
|
480
|
+
/**
|
|
481
|
+
* Half modes that resolve an exact half upward. Half-floor, half-trunc and half-even (0 is the
|
|
482
|
+
* even quotient) resolve it to the start.
|
|
483
|
+
*/
|
|
484
|
+
const HALF_ROUNDS_TOWARD_END = new Set([
|
|
485
|
+
"halfCeil",
|
|
486
|
+
"halfExpand",
|
|
487
|
+
]);
|
|
488
|
+
/** TC39 `RoundTimeDurationToIncrement` for `0 <= progress < length`: either 0 or `length`. */
|
|
489
|
+
function roundDayProgress(progress, length, roundingMode) {
|
|
490
|
+
if (progress === 0n || ROUNDS_TOWARD_START.has(roundingMode))
|
|
491
|
+
return 0n;
|
|
492
|
+
if (ROUNDS_TOWARD_END.has(roundingMode))
|
|
493
|
+
return length;
|
|
494
|
+
const twice = progress * 2n;
|
|
495
|
+
if (twice === length) {
|
|
496
|
+
return HALF_ROUNDS_TOWARD_END.has(roundingMode) ? length : 0n;
|
|
497
|
+
}
|
|
498
|
+
return twice < length ? 0n : length;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* TC39 `ZonedDateTime#round` with `smallestUnit: "day"`, from GMT's own `GetStartOfDay`: to the
|
|
502
|
+
* start of this day or the next.
|
|
503
|
+
*/
|
|
504
|
+
function roundToDayFromOwnStartOfDay(zoned, date, roundingMode) {
|
|
505
|
+
const start = startOfDayEpochNanoseconds(zoned.timeZoneId, date);
|
|
506
|
+
// Past the last representable date `add` throws, as TC39 `GetStartOfDay` does for that day.
|
|
507
|
+
const end = startOfDayEpochNanoseconds(zoned.timeZoneId, date.add({ days: 1 }));
|
|
508
|
+
const progress = zoned.epochNanoseconds - start;
|
|
509
|
+
return inZoneOf(start + roundDayProgress(progress, end - start, roundingMode), zoned);
|
|
510
|
+
}
|
|
511
|
+
function isDayUnit(unit) {
|
|
512
|
+
return unit === "day" || unit === "days";
|
|
513
|
+
}
|
|
514
|
+
function roundAtEdge(zoned, roundTo) {
|
|
515
|
+
const date = zoned.toPlainDate();
|
|
516
|
+
let roundedWall;
|
|
517
|
+
try {
|
|
518
|
+
// Validates the options exactly as ZonedDateTime#round does, and rounds the wall clock.
|
|
519
|
+
roundedWall = zoned.toPlainDateTime().round(roundTo);
|
|
520
|
+
}
|
|
521
|
+
catch {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
if (!isAtRangeEdge(zoned.timeZoneId, date)) {
|
|
525
|
+
return null;
|
|
526
|
+
}
|
|
527
|
+
if (isDayUnit(roundTo.smallestUnit)) {
|
|
528
|
+
return roundToDayFromOwnStartOfDay(zoned, date, roundTo.roundingMode ?? "halfExpand");
|
|
529
|
+
}
|
|
530
|
+
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, roundedWall, { nanoseconds: BigInt(zoned.offsetNanoseconds) }, "compatible", "prefer", false);
|
|
531
|
+
return inZoneOf(epoch, zoned);
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* `ZonedDateTime#round`, correct at the range limits and, by day, before 1847.
|
|
535
|
+
*
|
|
536
|
+
* @param zoned the value to round
|
|
537
|
+
* @param roundTo Temporal `smallestUnit` (day or smaller) / `roundingIncrement` / `roundingMode`
|
|
538
|
+
* @returns the rounded value; throws where TC39 Temporal throws
|
|
539
|
+
*/
|
|
540
|
+
export function roundZonedDateTime(zoned, roundTo) {
|
|
541
|
+
if (isDayUnit(roundTo.smallestUnit) &&
|
|
542
|
+
needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
543
|
+
// Validates the options exactly as ZonedDateTime#round does, throwing where it throws.
|
|
544
|
+
zoned.toPlainDateTime().round(roundTo);
|
|
545
|
+
return roundToDayFromOwnStartOfDay(zoned, zoned.toPlainDate(), roundTo.roundingMode ?? "halfExpand");
|
|
546
|
+
}
|
|
547
|
+
try {
|
|
548
|
+
return zoned.round(roundTo);
|
|
549
|
+
}
|
|
550
|
+
catch (error) {
|
|
551
|
+
return recoverAtRangeEdge(error, () => roundAtEdge(zoned, roundTo));
|
|
552
|
+
}
|
|
553
|
+
}
|