@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,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The magic numbers behind `precision/convert/`'s foreign-epoch bridges, in one place.
|
|
3
|
+
*
|
|
4
|
+
* Every integration that talks to NTP, Windows, .NET, Excel or PostgreSQL re-derives these
|
|
5
|
+
* constants, usually wrongly. They live here so each `to*`/`from*` pair reads from the same
|
|
6
|
+
* declaration and `foreignEpochs.test.ts` can assert every one of them against a real
|
|
7
|
+
* `Temporal` day count rather than against the arithmetic that consumes them.
|
|
8
|
+
*
|
|
9
|
+
* | Format | Epoch | Unit | Representable range |
|
|
10
|
+
* | --- | --- | --- | --- |
|
|
11
|
+
* | NTP | 1900-01-01 | 2^-32 s | 64 bits, wrapping every 2^32 s (~136.19 years) into a new era |
|
|
12
|
+
* | FILETIME | 1601-01-01 | 100 ns | `0n` to 2^63 − 1, 1601-01-01 to +030828-09-14 (`FileTimeToSystemTime`'s limit) |
|
|
13
|
+
* | .NET ticks | 0001-01-01 | 100 ns | `DateTime.MinValue` to `DateTime.MaxValue`, 0001-01-01 to 9999-12-31 |
|
|
14
|
+
* | Excel 1900 | 1899-12-30 | 1 day | serial 1 (1900-01-01) to 2958465 (9999-12-31); 60 is the phantom 1900-02-29 |
|
|
15
|
+
* | Excel 1904 | 1904-01-01 | 1 day | serial 0 (1904-01-01) to 2957003 (9999-12-31) |
|
|
16
|
+
* | PostgreSQL | 2000-01-01 | 1 µs | `MIN_TIMESTAMP` (4713 BC) up; capped above by `Temporal.Instant`, not by int64 |
|
|
17
|
+
*
|
|
18
|
+
* Sources: [FILETIME epoch](https://devblogs.microsoft.com/oldnewthing/20090306-00/?p=18913),
|
|
19
|
+
* [NTP eras](https://www.eecis.udel.edu/~mills/y2k.html),
|
|
20
|
+
* [.NET ticks](https://www.epochconverter.com/dotnet).
|
|
21
|
+
*/
|
|
22
|
+
/** Nanoseconds in one second. */
|
|
23
|
+
export declare const NANOSECONDS_PER_SECOND = 1000000000n;
|
|
24
|
+
/** Nanoseconds in one millisecond — the finest grid an Excel serial's `double` can carry. */
|
|
25
|
+
export declare const NANOSECONDS_PER_MILLISECOND = 1000000n;
|
|
26
|
+
/** Nanoseconds in one microsecond — PostgreSQL `timestamptz` resolution. */
|
|
27
|
+
export declare const NANOSECONDS_PER_MICROSECOND = 1000n;
|
|
28
|
+
/** Nanoseconds in one 100-nanosecond tick — the unit FILETIME and .NET ticks share. */
|
|
29
|
+
export declare const NANOSECONDS_PER_TICK = 100n;
|
|
30
|
+
/** Nanoseconds in one 24-hour day. */
|
|
31
|
+
export declare const NANOSECONDS_PER_DAY = 86400000000000n;
|
|
32
|
+
/** The same value as a `number` — an Excel serial is days in a `double`. */
|
|
33
|
+
export declare const NANOSECONDS_PER_DAY_NUMBER = 86400000000000;
|
|
34
|
+
/** Milliseconds in one 24-hour day. Excel serials round to this grid; see `fromExcelSerial`. */
|
|
35
|
+
export declare const MILLISECONDS_PER_DAY = 86400000;
|
|
36
|
+
/**
|
|
37
|
+
* Fractional units in one NTP second: the low 32 bits of the timestamp count 2^-32 s,
|
|
38
|
+
* i.e. ~232.83 picoseconds.
|
|
39
|
+
*/
|
|
40
|
+
export declare const NTP_UNITS_PER_SECOND = 4294967296n;
|
|
41
|
+
/**
|
|
42
|
+
* Values in one NTP era: 2^64, the whole 64-bit timestamp. The seconds field is unsigned
|
|
43
|
+
* 32-bit, so the timestamp wraps here — every 2^32 seconds, or ~136.19 years.
|
|
44
|
+
*/
|
|
45
|
+
export declare const NTP_ERA_UNITS = 18446744073709551616n;
|
|
46
|
+
/**
|
|
47
|
+
* Nanoseconds from 1900-01-01 (the NTP epoch) to 1970-01-01: 2 208 988 800 s, the delta
|
|
48
|
+
* RFC 5905 names for converting an NTP timestamp to a Unix one.
|
|
49
|
+
*/
|
|
50
|
+
export declare const NTP_EPOCH_OFFSET_NANOSECONDS = 2208988800000000000n;
|
|
51
|
+
/**
|
|
52
|
+
* 100-nanosecond intervals from 1601-01-01 (the FILETIME epoch) to 1970-01-01:
|
|
53
|
+
* 11 644 473 600 s, the constant every Win32-to-Unix conversion carries.
|
|
54
|
+
*/
|
|
55
|
+
export declare const FILE_TIME_EPOCH_OFFSET_TICKS = 116444736000000000n;
|
|
56
|
+
/** Smallest FILETIME: `FILETIME` is a pair of `DWORD`s, so the value is unsigned. */
|
|
57
|
+
export declare const MIN_FILE_TIME = 0n;
|
|
58
|
+
/**
|
|
59
|
+
* Largest convertible FILETIME: 2^63 − 1, i.e. `+030828-09-14T02:48:05.4775807Z`.
|
|
60
|
+
*
|
|
61
|
+
* The struct's two `DWORD`s hold up to 2^64 − 1, but Microsoft's `FileTimeToSystemTime`
|
|
62
|
+
* says the value "must be less than 0x8000000000000000. Otherwise, the function fails", and
|
|
63
|
+
* `SetFileTime` reserves `0xFFFFFFFF`/`0xFFFFFFFF` (2^64 − 1) as a "do not modify" marker
|
|
64
|
+
* rather than a time. Values from 2^63 up are therefore not dates.
|
|
65
|
+
* Source: https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-filetimetosystemtime
|
|
66
|
+
*/
|
|
67
|
+
export declare const MAX_FILE_TIME = 9223372036854775807n;
|
|
68
|
+
/**
|
|
69
|
+
* 100-nanosecond intervals from 0001-01-01 (the `DateTime` epoch, proleptic Gregorian) to
|
|
70
|
+
* 1970-01-01. `DateTime.UnixEpoch.Ticks` in .NET.
|
|
71
|
+
*/
|
|
72
|
+
export declare const DOT_NET_TICKS_EPOCH_OFFSET = 621355968000000000n;
|
|
73
|
+
/** `DateTime.MinValue.Ticks` — 0001-01-01T00:00:00. */
|
|
74
|
+
export declare const MIN_DOT_NET_TICKS = 0n;
|
|
75
|
+
/** `DateTime.MaxValue.Ticks` — 9999-12-31T23:59:59.9999999. */
|
|
76
|
+
export declare const MAX_DOT_NET_TICKS = 3155378975999999999n;
|
|
77
|
+
/**
|
|
78
|
+
* Nanoseconds at 1899-12-30, serial 0 of the 1900 date system.
|
|
79
|
+
*
|
|
80
|
+
* Serial 0 is *not* 1899-12-31, even though serial 1 is 1900-01-01: the system counts the
|
|
81
|
+
* phantom 29 February 1900 that Lotus 1-2-3 invented and Excel keeps for compatibility, so
|
|
82
|
+
* everything from serial 61 on sits one day later than a naive count would put it. Serials
|
|
83
|
+
* 1–59 are offset from `EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS` instead.
|
|
84
|
+
*/
|
|
85
|
+
export declare const EXCEL_1900_EPOCH_NANOSECONDS = -2209161600000000000n;
|
|
86
|
+
/**
|
|
87
|
+
* Nanoseconds at 1899-12-31 — the effective serial 0 for the 1900 system's serials 1–59,
|
|
88
|
+
* which precede the phantom leap day.
|
|
89
|
+
*/
|
|
90
|
+
export declare const EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS = -2209075200000000000n;
|
|
91
|
+
/** Nanoseconds at 1904-01-01, serial 0 of the legacy Mac 1904 date system. */
|
|
92
|
+
export declare const EXCEL_1904_EPOCH_NANOSECONDS = -2082844800000000000n;
|
|
93
|
+
/**
|
|
94
|
+
* Days between the two systems' serial 0. A 1900-system serial is exactly 1462 higher than
|
|
95
|
+
* the 1904-system serial for the same date (once past the phantom day).
|
|
96
|
+
*/
|
|
97
|
+
export declare const EXCEL_SYSTEM_DAY_DELTA = 1462;
|
|
98
|
+
/** Excel's first real 1900-system serial: 1 is 1900-01-01. Serial 0 renders as "January 0". */
|
|
99
|
+
export declare const MIN_EXCEL_1900_SERIAL = 1;
|
|
100
|
+
/** Excel's first 1904-system serial: 0 is 1904-01-01. */
|
|
101
|
+
export declare const MIN_EXCEL_1904_SERIAL = 0;
|
|
102
|
+
/**
|
|
103
|
+
* One past Excel's last 1900-system serial. 2958465 is 9999-12-31, so anything below
|
|
104
|
+
* 2958466 is inside 9999-12-31.
|
|
105
|
+
*/
|
|
106
|
+
export declare const MAX_EXCEL_1900_SERIAL_EXCLUSIVE = 2958466;
|
|
107
|
+
/** One past Excel's last 1904-system serial. 2957003 is 9999-12-31. */
|
|
108
|
+
export declare const MAX_EXCEL_1904_SERIAL_EXCLUSIVE = 2957004;
|
|
109
|
+
/**
|
|
110
|
+
* The 1900 system's phantom serial: 60 is 29 February 1900, a date that never existed —
|
|
111
|
+
* 1900 was not a leap year. The whole serial day `[60, 61)` has no instant behind it.
|
|
112
|
+
*/
|
|
113
|
+
export declare const EXCEL_PHANTOM_SERIAL = 60;
|
|
114
|
+
/**
|
|
115
|
+
* Nanoseconds at 1900-03-01, the first instant the 1900 system's serials stop needing the
|
|
116
|
+
* phantom-day correction.
|
|
117
|
+
*/
|
|
118
|
+
export declare const EXCEL_1900_PHANTOM_END_NANOSECONDS = -2203891200000000000n;
|
|
119
|
+
/**
|
|
120
|
+
* Microseconds from 1970-01-01 to 2000-01-01, PostgreSQL's internal `timestamptz` epoch:
|
|
121
|
+
* 946 684 800 s.
|
|
122
|
+
*/
|
|
123
|
+
export declare const PG_EPOCH_OFFSET_MICROSECONDS = 946684800000000n;
|
|
124
|
+
/**
|
|
125
|
+
* PostgreSQL's smallest `timestamp`/`timestamptz`: `MIN_TIMESTAMP` in
|
|
126
|
+
* `src/include/datatype/timestamp.h`, i.e. Julian Day 0 — `-004713-11-24T00:00:00Z` in the
|
|
127
|
+
* proleptic Gregorian calendar the ISO strings use, which is the 4713 BC the manual names in
|
|
128
|
+
* the *Julian* calendar.
|
|
129
|
+
*
|
|
130
|
+
* There is no matching maximum here: PostgreSQL's `END_TIMESTAMP` (9223371331200000000, one
|
|
131
|
+
* past 294276-12-31) is beyond what `Temporal.Instant` can represent, so the instant range
|
|
132
|
+
* binds first and a second constant would be unreachable.
|
|
133
|
+
*/
|
|
134
|
+
export declare const MIN_PG_MICROSECONDS = -211813488000000000n;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The magic numbers behind `precision/convert/`'s foreign-epoch bridges, in one place.
|
|
3
|
+
*
|
|
4
|
+
* Every integration that talks to NTP, Windows, .NET, Excel or PostgreSQL re-derives these
|
|
5
|
+
* constants, usually wrongly. They live here so each `to*`/`from*` pair reads from the same
|
|
6
|
+
* declaration and `foreignEpochs.test.ts` can assert every one of them against a real
|
|
7
|
+
* `Temporal` day count rather than against the arithmetic that consumes them.
|
|
8
|
+
*
|
|
9
|
+
* | Format | Epoch | Unit | Representable range |
|
|
10
|
+
* | --- | --- | --- | --- |
|
|
11
|
+
* | NTP | 1900-01-01 | 2^-32 s | 64 bits, wrapping every 2^32 s (~136.19 years) into a new era |
|
|
12
|
+
* | FILETIME | 1601-01-01 | 100 ns | `0n` to 2^63 − 1, 1601-01-01 to +030828-09-14 (`FileTimeToSystemTime`'s limit) |
|
|
13
|
+
* | .NET ticks | 0001-01-01 | 100 ns | `DateTime.MinValue` to `DateTime.MaxValue`, 0001-01-01 to 9999-12-31 |
|
|
14
|
+
* | Excel 1900 | 1899-12-30 | 1 day | serial 1 (1900-01-01) to 2958465 (9999-12-31); 60 is the phantom 1900-02-29 |
|
|
15
|
+
* | Excel 1904 | 1904-01-01 | 1 day | serial 0 (1904-01-01) to 2957003 (9999-12-31) |
|
|
16
|
+
* | PostgreSQL | 2000-01-01 | 1 µs | `MIN_TIMESTAMP` (4713 BC) up; capped above by `Temporal.Instant`, not by int64 |
|
|
17
|
+
*
|
|
18
|
+
* Sources: [FILETIME epoch](https://devblogs.microsoft.com/oldnewthing/20090306-00/?p=18913),
|
|
19
|
+
* [NTP eras](https://www.eecis.udel.edu/~mills/y2k.html),
|
|
20
|
+
* [.NET ticks](https://www.epochconverter.com/dotnet).
|
|
21
|
+
*/
|
|
22
|
+
/** Nanoseconds in one second. */
|
|
23
|
+
export const NANOSECONDS_PER_SECOND = 1000000000n;
|
|
24
|
+
/** Nanoseconds in one millisecond — the finest grid an Excel serial's `double` can carry. */
|
|
25
|
+
export const NANOSECONDS_PER_MILLISECOND = 1000000n;
|
|
26
|
+
/** Nanoseconds in one microsecond — PostgreSQL `timestamptz` resolution. */
|
|
27
|
+
export const NANOSECONDS_PER_MICROSECOND = 1000n;
|
|
28
|
+
/** Nanoseconds in one 100-nanosecond tick — the unit FILETIME and .NET ticks share. */
|
|
29
|
+
export const NANOSECONDS_PER_TICK = 100n;
|
|
30
|
+
/** Nanoseconds in one 24-hour day. */
|
|
31
|
+
export const NANOSECONDS_PER_DAY = 86400000000000n;
|
|
32
|
+
/** The same value as a `number` — an Excel serial is days in a `double`. */
|
|
33
|
+
export const NANOSECONDS_PER_DAY_NUMBER = 86_400_000_000_000;
|
|
34
|
+
/** Milliseconds in one 24-hour day. Excel serials round to this grid; see `fromExcelSerial`. */
|
|
35
|
+
export const MILLISECONDS_PER_DAY = 86_400_000;
|
|
36
|
+
// --- NTP (RFC 5905) -------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Fractional units in one NTP second: the low 32 bits of the timestamp count 2^-32 s,
|
|
39
|
+
* i.e. ~232.83 picoseconds.
|
|
40
|
+
*/
|
|
41
|
+
export const NTP_UNITS_PER_SECOND = 4294967296n;
|
|
42
|
+
/**
|
|
43
|
+
* Values in one NTP era: 2^64, the whole 64-bit timestamp. The seconds field is unsigned
|
|
44
|
+
* 32-bit, so the timestamp wraps here — every 2^32 seconds, or ~136.19 years.
|
|
45
|
+
*/
|
|
46
|
+
export const NTP_ERA_UNITS = 18446744073709551616n;
|
|
47
|
+
/**
|
|
48
|
+
* Nanoseconds from 1900-01-01 (the NTP epoch) to 1970-01-01: 2 208 988 800 s, the delta
|
|
49
|
+
* RFC 5905 names for converting an NTP timestamp to a Unix one.
|
|
50
|
+
*/
|
|
51
|
+
export const NTP_EPOCH_OFFSET_NANOSECONDS = 2208988800000000000n;
|
|
52
|
+
// --- Windows FILETIME -----------------------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* 100-nanosecond intervals from 1601-01-01 (the FILETIME epoch) to 1970-01-01:
|
|
55
|
+
* 11 644 473 600 s, the constant every Win32-to-Unix conversion carries.
|
|
56
|
+
*/
|
|
57
|
+
export const FILE_TIME_EPOCH_OFFSET_TICKS = 116444736000000000n;
|
|
58
|
+
/** Smallest FILETIME: `FILETIME` is a pair of `DWORD`s, so the value is unsigned. */
|
|
59
|
+
export const MIN_FILE_TIME = 0n;
|
|
60
|
+
/**
|
|
61
|
+
* Largest convertible FILETIME: 2^63 − 1, i.e. `+030828-09-14T02:48:05.4775807Z`.
|
|
62
|
+
*
|
|
63
|
+
* The struct's two `DWORD`s hold up to 2^64 − 1, but Microsoft's `FileTimeToSystemTime`
|
|
64
|
+
* says the value "must be less than 0x8000000000000000. Otherwise, the function fails", and
|
|
65
|
+
* `SetFileTime` reserves `0xFFFFFFFF`/`0xFFFFFFFF` (2^64 − 1) as a "do not modify" marker
|
|
66
|
+
* rather than a time. Values from 2^63 up are therefore not dates.
|
|
67
|
+
* Source: https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-filetimetosystemtime
|
|
68
|
+
*/
|
|
69
|
+
export const MAX_FILE_TIME = 9223372036854775807n;
|
|
70
|
+
// --- .NET ticks -----------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* 100-nanosecond intervals from 0001-01-01 (the `DateTime` epoch, proleptic Gregorian) to
|
|
73
|
+
* 1970-01-01. `DateTime.UnixEpoch.Ticks` in .NET.
|
|
74
|
+
*/
|
|
75
|
+
export const DOT_NET_TICKS_EPOCH_OFFSET = 621355968000000000n;
|
|
76
|
+
/** `DateTime.MinValue.Ticks` — 0001-01-01T00:00:00. */
|
|
77
|
+
export const MIN_DOT_NET_TICKS = 0n;
|
|
78
|
+
/** `DateTime.MaxValue.Ticks` — 9999-12-31T23:59:59.9999999. */
|
|
79
|
+
export const MAX_DOT_NET_TICKS = 3155378975999999999n;
|
|
80
|
+
// --- Excel day serials ----------------------------------------------------
|
|
81
|
+
/**
|
|
82
|
+
* Nanoseconds at 1899-12-30, serial 0 of the 1900 date system.
|
|
83
|
+
*
|
|
84
|
+
* Serial 0 is *not* 1899-12-31, even though serial 1 is 1900-01-01: the system counts the
|
|
85
|
+
* phantom 29 February 1900 that Lotus 1-2-3 invented and Excel keeps for compatibility, so
|
|
86
|
+
* everything from serial 61 on sits one day later than a naive count would put it. Serials
|
|
87
|
+
* 1–59 are offset from `EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS` instead.
|
|
88
|
+
*/
|
|
89
|
+
export const EXCEL_1900_EPOCH_NANOSECONDS = -2209161600000000000n;
|
|
90
|
+
/**
|
|
91
|
+
* Nanoseconds at 1899-12-31 — the effective serial 0 for the 1900 system's serials 1–59,
|
|
92
|
+
* which precede the phantom leap day.
|
|
93
|
+
*/
|
|
94
|
+
export const EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS = -2209075200000000000n;
|
|
95
|
+
/** Nanoseconds at 1904-01-01, serial 0 of the legacy Mac 1904 date system. */
|
|
96
|
+
export const EXCEL_1904_EPOCH_NANOSECONDS = -2082844800000000000n;
|
|
97
|
+
/**
|
|
98
|
+
* Days between the two systems' serial 0. A 1900-system serial is exactly 1462 higher than
|
|
99
|
+
* the 1904-system serial for the same date (once past the phantom day).
|
|
100
|
+
*/
|
|
101
|
+
export const EXCEL_SYSTEM_DAY_DELTA = 1462;
|
|
102
|
+
/** Excel's first real 1900-system serial: 1 is 1900-01-01. Serial 0 renders as "January 0". */
|
|
103
|
+
export const MIN_EXCEL_1900_SERIAL = 1;
|
|
104
|
+
/** Excel's first 1904-system serial: 0 is 1904-01-01. */
|
|
105
|
+
export const MIN_EXCEL_1904_SERIAL = 0;
|
|
106
|
+
/**
|
|
107
|
+
* One past Excel's last 1900-system serial. 2958465 is 9999-12-31, so anything below
|
|
108
|
+
* 2958466 is inside 9999-12-31.
|
|
109
|
+
*/
|
|
110
|
+
export const MAX_EXCEL_1900_SERIAL_EXCLUSIVE = 2_958_466;
|
|
111
|
+
/** One past Excel's last 1904-system serial. 2957003 is 9999-12-31. */
|
|
112
|
+
export const MAX_EXCEL_1904_SERIAL_EXCLUSIVE = 2_957_004;
|
|
113
|
+
/**
|
|
114
|
+
* The 1900 system's phantom serial: 60 is 29 February 1900, a date that never existed —
|
|
115
|
+
* 1900 was not a leap year. The whole serial day `[60, 61)` has no instant behind it.
|
|
116
|
+
*/
|
|
117
|
+
export const EXCEL_PHANTOM_SERIAL = 60;
|
|
118
|
+
/**
|
|
119
|
+
* Nanoseconds at 1900-03-01, the first instant the 1900 system's serials stop needing the
|
|
120
|
+
* phantom-day correction.
|
|
121
|
+
*/
|
|
122
|
+
export const EXCEL_1900_PHANTOM_END_NANOSECONDS = -2203891200000000000n;
|
|
123
|
+
// --- PostgreSQL -----------------------------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* Microseconds from 1970-01-01 to 2000-01-01, PostgreSQL's internal `timestamptz` epoch:
|
|
126
|
+
* 946 684 800 s.
|
|
127
|
+
*/
|
|
128
|
+
export const PG_EPOCH_OFFSET_MICROSECONDS = 946684800000000n;
|
|
129
|
+
/**
|
|
130
|
+
* PostgreSQL's smallest `timestamp`/`timestamptz`: `MIN_TIMESTAMP` in
|
|
131
|
+
* `src/include/datatype/timestamp.h`, i.e. Julian Day 0 — `-004713-11-24T00:00:00Z` in the
|
|
132
|
+
* proleptic Gregorian calendar the ISO strings use, which is the 4713 BC the manual names in
|
|
133
|
+
* the *Julian* calendar.
|
|
134
|
+
*
|
|
135
|
+
* There is no matching maximum here: PostgreSQL's `END_TIMESTAMP` (9223371331200000000, one
|
|
136
|
+
* past 294276-12-31) is beyond what `Temporal.Instant` can represent, so the instant range
|
|
137
|
+
* binds first and a second constant would be unreachable.
|
|
138
|
+
*/
|
|
139
|
+
export const MIN_PG_MICROSECONDS = -211813488000000000n;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Render a calendar phrase for a moment `diffDays` calendar days from the reference: "tomorrow at
|
|
4
|
+
* 2:30 PM" within six days, else the long date and time. Shared by the zoned, utc and unix
|
|
5
|
+
* calendar formatters.
|
|
6
|
+
*
|
|
7
|
+
* @param diffDays signed calendar-day distance from the reference, in `timeZone`
|
|
8
|
+
* @param epochMilliseconds the moment to render
|
|
9
|
+
* @param timeZone IANA zone the clock time is rendered in
|
|
10
|
+
* @param locale BCP 47 locale(s) passed through to `Intl`
|
|
11
|
+
* @param timeStyle the `Intl.DateTimeFormat` time style
|
|
12
|
+
* @returns the phrase; throws where `Intl` throws, for the caller's sentinel
|
|
13
|
+
* @example formatCalendarDays(1, 1710685800000, "UTC", "en-US", "short") // "tomorrow at 2:30 PM"
|
|
14
|
+
* @example formatCalendarDays(-9, 1710685800000, "UTC", "en-US", "short") // "March 17, 2024 at 2:30 PM"
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatCalendarDays(diffDays: number, epochMilliseconds: number, timeZone: string, locale: string | string[] | undefined, timeStyle: "short" | "medium" | "full"): string;
|
|
17
|
+
/**
|
|
18
|
+
* `formatCalendarDays` for two instants, counting calendar days between their dates in `timeZone`.
|
|
19
|
+
*
|
|
20
|
+
* @param target the moment to render
|
|
21
|
+
* @param reference the moment "today" is read from
|
|
22
|
+
* @param timeZone IANA zone both dates and the clock time are read in
|
|
23
|
+
* @param locale BCP 47 locale(s) passed through to `Intl`
|
|
24
|
+
* @param timeStyle the `Intl.DateTimeFormat` time style
|
|
25
|
+
* @returns the phrase; throws where Temporal or `Intl` throws
|
|
26
|
+
* @example formatCalendarInstants(Temporal.Instant.from("2024-03-17T14:30:00Z"), Temporal.Instant.from("2024-03-16T09:00:00Z"), "UTC", "en-US", "short") // "tomorrow at 2:30 PM"
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatCalendarInstants(target: Temporal.Instant, reference: Temporal.Instant, timeZone: string, locale: string | string[] | undefined, timeStyle: "short" | "medium" | "full"): string;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { joinDateTimeConnector } from "./joinDateTimeConnector.js";
|
|
2
|
+
import { normalizeDateTime } from "./normalizeDateTime.js";
|
|
3
|
+
// Beyond a week either direction the phrase falls back to an absolute date, as plain
|
|
4
|
+
// `formatCalendar` does.
|
|
5
|
+
const ABS_DAY_THRESHOLD = 6;
|
|
6
|
+
/**
|
|
7
|
+
* Render a calendar phrase for a moment `diffDays` calendar days from the reference: "tomorrow at
|
|
8
|
+
* 2:30 PM" within six days, else the long date and time. Shared by the zoned, utc and unix
|
|
9
|
+
* calendar formatters.
|
|
10
|
+
*
|
|
11
|
+
* @param diffDays signed calendar-day distance from the reference, in `timeZone`
|
|
12
|
+
* @param epochMilliseconds the moment to render
|
|
13
|
+
* @param timeZone IANA zone the clock time is rendered in
|
|
14
|
+
* @param locale BCP 47 locale(s) passed through to `Intl`
|
|
15
|
+
* @param timeStyle the `Intl.DateTimeFormat` time style
|
|
16
|
+
* @returns the phrase; throws where `Intl` throws, for the caller's sentinel
|
|
17
|
+
* @example formatCalendarDays(1, 1710685800000, "UTC", "en-US", "short") // "tomorrow at 2:30 PM"
|
|
18
|
+
* @example formatCalendarDays(-9, 1710685800000, "UTC", "en-US", "short") // "March 17, 2024 at 2:30 PM"
|
|
19
|
+
*/
|
|
20
|
+
export function formatCalendarDays(diffDays, epochMilliseconds, timeZone, locale, timeStyle) {
|
|
21
|
+
if (Math.abs(diffDays) > ABS_DAY_THRESHOLD) {
|
|
22
|
+
return normalizeDateTime(new Intl.DateTimeFormat(locale, {
|
|
23
|
+
dateStyle: "long",
|
|
24
|
+
timeStyle,
|
|
25
|
+
timeZone,
|
|
26
|
+
}).format(epochMilliseconds));
|
|
27
|
+
}
|
|
28
|
+
const dayLabel = new Intl.RelativeTimeFormat(locale, {
|
|
29
|
+
numeric: "auto",
|
|
30
|
+
}).format(diffDays, "day");
|
|
31
|
+
return normalizeDateTime(joinDateTimeConnector(epochMilliseconds, timeZone, locale, dayLabel, timeStyle));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* `formatCalendarDays` for two instants, counting calendar days between their dates in `timeZone`.
|
|
35
|
+
*
|
|
36
|
+
* @param target the moment to render
|
|
37
|
+
* @param reference the moment "today" is read from
|
|
38
|
+
* @param timeZone IANA zone both dates and the clock time are read in
|
|
39
|
+
* @param locale BCP 47 locale(s) passed through to `Intl`
|
|
40
|
+
* @param timeStyle the `Intl.DateTimeFormat` time style
|
|
41
|
+
* @returns the phrase; throws where Temporal or `Intl` throws
|
|
42
|
+
* @example formatCalendarInstants(Temporal.Instant.from("2024-03-17T14:30:00Z"), Temporal.Instant.from("2024-03-16T09:00:00Z"), "UTC", "en-US", "short") // "tomorrow at 2:30 PM"
|
|
43
|
+
*/
|
|
44
|
+
export function formatCalendarInstants(target, reference, timeZone, locale, timeStyle) {
|
|
45
|
+
const targetDate = target.toZonedDateTimeISO(timeZone).toPlainDate();
|
|
46
|
+
const referenceDate = reference.toZonedDateTimeISO(timeZone).toPlainDate();
|
|
47
|
+
const diffDays = targetDate.since(referenceDate).days;
|
|
48
|
+
return formatCalendarDays(diffDays, Number(target.epochMilliseconds), timeZone, locale, timeStyle);
|
|
49
|
+
}
|
|
@@ -1,47 +1,22 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import type { CalendarSystem } from "../types/index.js";
|
|
3
|
-
import { type CalendarDateStringParts } from "./calendarDateString.js";
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Write a Temporal.PlainDate as a GMT PlainDate string in `calendar`: exactly
|
|
5
|
+
* `Temporal.PlainDate#toString()` for that date in that calendar. That is Temporal's
|
|
6
|
+
* `TemporalDateToString` with `calendarName: "auto"` — the ISO date (`PadISOYear`: four digits,
|
|
7
|
+
* or a sign and six) followed by `FormatCalendarAnnotation`, which is empty for `"iso8601"` and
|
|
8
|
+
* `[u-ca=<id>]` for every other calendar, `"gregory"` included.
|
|
8
9
|
*
|
|
9
|
-
* The
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* the split rather than string-slicing `formatDateInCalendar`'s output on `"["` keeps the era,
|
|
13
|
-
* Ethiopic-family and zero-padding logic in exactly one place per calendar family.
|
|
10
|
+
* The calendar is passed in, not read from `date.calendarId`, because `"ethiopic"` and
|
|
11
|
+
* `"coptic"` compute in `"ethioaa"` (`computationCalendarId`); the ISO date is the same whichever
|
|
12
|
+
* calendar it was computed in.
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* apart from the PlainDate object alone (see `ethiopicFamilyCalendar.ts`).
|
|
14
|
+
* @param date Temporal.PlainDate to write, in any calendar
|
|
15
|
+
* @param calendar the CalendarSystem the string names
|
|
16
|
+
* @returns the RFC 9557 PlainDate string
|
|
19
17
|
*
|
|
20
|
-
* @
|
|
21
|
-
*
|
|
22
|
-
* @
|
|
23
|
-
* @returns `{ date, annotation }` — `annotation` is `""` for the "gregorian"/iso8601 case
|
|
24
|
-
*/
|
|
25
|
-
export declare function calendarDateStringParts(date: Temporal.PlainDate, calendar: CalendarSystem): CalendarDateStringParts;
|
|
26
|
-
/**
|
|
27
|
-
* Format a Temporal.PlainDate as a GMT calendar-annotated (or bare ISO) string in a known
|
|
28
|
-
* target CalendarSystem — companion to `calendarSystemOfDateValue`.
|
|
29
|
-
*
|
|
30
|
-
* The calendar must always be known up front and passed in explicitly, never re-derived from
|
|
31
|
-
* `date.calendarId` alone: the Ethiopic family ("ethiopic" / "ethiopic-amete-alem" / "coptic")
|
|
32
|
-
* is backed by Temporal's single, ambiguous "ethioaa" id, which cannot tell the three variants
|
|
33
|
-
* apart from the PlainDate object alone (see `ethiopicFamilyCalendar.ts`).
|
|
34
|
-
*
|
|
35
|
-
* Within a known target calendar, though, the *fields* (year, era, month, day) are always
|
|
36
|
-
* re-derived from the actual resulting `date`, never copied from an input string's tag —
|
|
37
|
-
* `calendarDateParts`/`ethiopicFamilyDateParts` both already do this per-call, which is
|
|
38
|
-
* required because calendar-unit arithmetic can cross a leap-month or era boundary (Hebrew
|
|
39
|
-
* Adar I -> Adar, Japanese Heisei -> Reiwa): a copied tag would describe a date that no longer
|
|
40
|
-
* exists (E5 decision of record D7).
|
|
41
|
-
*
|
|
42
|
-
* @param date Temporal.PlainDate to format, already calendared as `calendar` expects
|
|
43
|
-
* (`"ethioaa"` for any Ethiopic-family member, its own Temporal calendar id otherwise)
|
|
44
|
-
* @param calendar the CalendarSystem `date` is known to represent
|
|
45
|
-
* @returns GMT's calendar-annotated (or bare ISO, for "gregorian") PlainDate string
|
|
18
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("2024-10-03").withCalendar("hebrew"), "hebrew") // "2024-10-03[u-ca=hebrew]"
|
|
19
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("2024-10-03"), "iso8601") // "2024-10-03"
|
|
20
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("+275760-09-13"), "roc") // "+275760-09-13[u-ca=roc]"
|
|
46
21
|
*/
|
|
47
22
|
export declare function formatDateInCalendar(date: Temporal.PlainDate, calendar: CalendarSystem): string;
|
|
@@ -1,54 +1,23 @@
|
|
|
1
|
-
import { calendarDateParts, } from "./calendarDateString.js";
|
|
2
|
-
import { ethiopicFamilyDateParts, isEthiopicFamilyCalendar, } from "./ethiopicFamilyCalendar.js";
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Write a Temporal.PlainDate as a GMT PlainDate string in `calendar`: exactly
|
|
3
|
+
* `Temporal.PlainDate#toString()` for that date in that calendar. That is Temporal's
|
|
4
|
+
* `TemporalDateToString` with `calendarName: "auto"` — the ISO date (`PadISOYear`: four digits,
|
|
5
|
+
* or a sign and six) followed by `FormatCalendarAnnotation`, which is empty for `"iso8601"` and
|
|
6
|
+
* `[u-ca=<id>]` for every other calendar, `"gregory"` included.
|
|
7
7
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* the split rather than string-slicing `formatDateInCalendar`'s output on `"["` keeps the era,
|
|
12
|
-
* Ethiopic-family and zero-padding logic in exactly one place per calendar family.
|
|
8
|
+
* The calendar is passed in, not read from `date.calendarId`, because `"ethiopic"` and
|
|
9
|
+
* `"coptic"` compute in `"ethioaa"` (`computationCalendarId`); the ISO date is the same whichever
|
|
10
|
+
* calendar it was computed in.
|
|
13
11
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* apart from the PlainDate object alone (see `ethiopicFamilyCalendar.ts`).
|
|
12
|
+
* @param date Temporal.PlainDate to write, in any calendar
|
|
13
|
+
* @param calendar the CalendarSystem the string names
|
|
14
|
+
* @returns the RFC 9557 PlainDate string
|
|
18
15
|
*
|
|
19
|
-
* @
|
|
20
|
-
*
|
|
21
|
-
* @
|
|
22
|
-
* @returns `{ date, annotation }` — `annotation` is `""` for the "gregorian"/iso8601 case
|
|
23
|
-
*/
|
|
24
|
-
export function calendarDateStringParts(date, calendar) {
|
|
25
|
-
if (isEthiopicFamilyCalendar(calendar)) {
|
|
26
|
-
return ethiopicFamilyDateParts(date, calendar);
|
|
27
|
-
}
|
|
28
|
-
return calendarDateParts(date);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Format a Temporal.PlainDate as a GMT calendar-annotated (or bare ISO) string in a known
|
|
32
|
-
* target CalendarSystem — companion to `calendarSystemOfDateValue`.
|
|
33
|
-
*
|
|
34
|
-
* The calendar must always be known up front and passed in explicitly, never re-derived from
|
|
35
|
-
* `date.calendarId` alone: the Ethiopic family ("ethiopic" / "ethiopic-amete-alem" / "coptic")
|
|
36
|
-
* is backed by Temporal's single, ambiguous "ethioaa" id, which cannot tell the three variants
|
|
37
|
-
* apart from the PlainDate object alone (see `ethiopicFamilyCalendar.ts`).
|
|
38
|
-
*
|
|
39
|
-
* Within a known target calendar, though, the *fields* (year, era, month, day) are always
|
|
40
|
-
* re-derived from the actual resulting `date`, never copied from an input string's tag —
|
|
41
|
-
* `calendarDateParts`/`ethiopicFamilyDateParts` both already do this per-call, which is
|
|
42
|
-
* required because calendar-unit arithmetic can cross a leap-month or era boundary (Hebrew
|
|
43
|
-
* Adar I -> Adar, Japanese Heisei -> Reiwa): a copied tag would describe a date that no longer
|
|
44
|
-
* exists (E5 decision of record D7).
|
|
45
|
-
*
|
|
46
|
-
* @param date Temporal.PlainDate to format, already calendared as `calendar` expects
|
|
47
|
-
* (`"ethioaa"` for any Ethiopic-family member, its own Temporal calendar id otherwise)
|
|
48
|
-
* @param calendar the CalendarSystem `date` is known to represent
|
|
49
|
-
* @returns GMT's calendar-annotated (or bare ISO, for "gregorian") PlainDate string
|
|
16
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("2024-10-03").withCalendar("hebrew"), "hebrew") // "2024-10-03[u-ca=hebrew]"
|
|
17
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("2024-10-03"), "iso8601") // "2024-10-03"
|
|
18
|
+
* @example formatDateInCalendar(Temporal.PlainDate.from("+275760-09-13"), "roc") // "+275760-09-13[u-ca=roc]"
|
|
50
19
|
*/
|
|
51
20
|
export function formatDateInCalendar(date, calendar) {
|
|
52
|
-
const
|
|
53
|
-
return `${
|
|
21
|
+
const iso = date.withCalendar("iso8601").toString();
|
|
22
|
+
return calendar === "iso8601" ? iso : `${iso}[u-ca=${calendar}]`;
|
|
54
23
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { RelativeRoundingMethod, RelativeTimeFormatOptions, RelativeUnit } from "../types/index.js";
|
|
3
|
+
/** A relative unit, singular or plural (`Intl.RelativeTimeFormat` and Temporal accept both). */
|
|
4
|
+
type RelativeUnitName = RelativeUnit | `${RelativeUnit}s`;
|
|
5
|
+
/** The display fields every seven-unit `formatRelative*` function reads. */
|
|
6
|
+
export interface RelativeDurationFormatOptions {
|
|
7
|
+
style?: RelativeTimeFormatOptions["style"];
|
|
8
|
+
numeric?: RelativeTimeFormatOptions["numeric"];
|
|
9
|
+
largestUnit?: RelativeUnitName;
|
|
10
|
+
roundingMethod?: RelativeRoundingMethod;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Render a signed distance with `Intl.RelativeTimeFormat`, picking the unit from the distance when
|
|
14
|
+
* `largestUnit` is omitted. The shared tail of the plain, utc, unix and zoned relative formatters.
|
|
15
|
+
*
|
|
16
|
+
* @param diff the signed distance (target since reference)
|
|
17
|
+
* @param locale BCP 47 locale(s) passed through to `Intl.RelativeTimeFormat`
|
|
18
|
+
* @param options display style, numeric mode, largest unit and rounding method
|
|
19
|
+
* @param calendarTotal the total in `unit` against the caller's anchor; called only when the unit
|
|
20
|
+
* is calendrical (month, year) and `diff.total(unit)` throws without a `relativeTo`
|
|
21
|
+
* @returns the formatted phrase; throws where `Intl` or Temporal throws, for the caller's sentinel
|
|
22
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ minutes: -30 }), "en-US", {}, () => 0) // "30 minutes ago"
|
|
23
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ hours: 36 }), "en-US", { largestUnit: "hour" }, () => 0) // "in 36 hours"
|
|
24
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ days: 400 }), "en-US", {}, () => 1) // "next year" (month/year totals come from calendarTotal)
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatRelativeDuration(diff: Temporal.Duration, locale: string | string[] | undefined, options: RelativeDurationFormatOptions, calendarTotal: (unit: RelativeUnitName) => number): string;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { normalizeDateTime } from "./normalizeDateTime.js";
|
|
2
|
+
import { resolveRelativeRounding } from "./resolveRelativeRounding.js";
|
|
3
|
+
// Seconds up to a day, then formatRelativeDate's day thresholds (7, 28 and 365 days).
|
|
4
|
+
const SECONDS_PER_DAY = 86_400;
|
|
5
|
+
const AUTO_UNITS = [
|
|
6
|
+
{ unit: "second", maxSeconds: 60 },
|
|
7
|
+
{ unit: "minute", maxSeconds: 3_600 },
|
|
8
|
+
{ unit: "hour", maxSeconds: SECONDS_PER_DAY },
|
|
9
|
+
{ unit: "day", maxSeconds: 7 * SECONDS_PER_DAY },
|
|
10
|
+
{ unit: "week", maxSeconds: 28 * SECONDS_PER_DAY },
|
|
11
|
+
{ unit: "month", maxSeconds: 365 * SECONDS_PER_DAY },
|
|
12
|
+
{ unit: "year", maxSeconds: Infinity },
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Render a signed distance with `Intl.RelativeTimeFormat`, picking the unit from the distance when
|
|
16
|
+
* `largestUnit` is omitted. The shared tail of the plain, utc, unix and zoned relative formatters.
|
|
17
|
+
*
|
|
18
|
+
* @param diff the signed distance (target since reference)
|
|
19
|
+
* @param locale BCP 47 locale(s) passed through to `Intl.RelativeTimeFormat`
|
|
20
|
+
* @param options display style, numeric mode, largest unit and rounding method
|
|
21
|
+
* @param calendarTotal the total in `unit` against the caller's anchor; called only when the unit
|
|
22
|
+
* is calendrical (month, year) and `diff.total(unit)` throws without a `relativeTo`
|
|
23
|
+
* @returns the formatted phrase; throws where `Intl` or Temporal throws, for the caller's sentinel
|
|
24
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ minutes: -30 }), "en-US", {}, () => 0) // "30 minutes ago"
|
|
25
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ hours: 36 }), "en-US", { largestUnit: "hour" }, () => 0) // "in 36 hours"
|
|
26
|
+
* @example formatRelativeDuration(Temporal.Duration.from({ days: 400 }), "en-US", {}, () => 1) // "next year" (month/year totals come from calendarTotal)
|
|
27
|
+
*/
|
|
28
|
+
export function formatRelativeDuration(diff, locale, options, calendarTotal) {
|
|
29
|
+
const absSeconds = Math.abs(diff.total("second"));
|
|
30
|
+
const unit = options.largestUnit === undefined
|
|
31
|
+
? (AUTO_UNITS.find((t) => absSeconds < t.maxSeconds)?.unit ?? "year")
|
|
32
|
+
: options.largestUnit;
|
|
33
|
+
let amount;
|
|
34
|
+
try {
|
|
35
|
+
amount = resolveRelativeRounding(diff.total(unit), options.roundingMethod);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// month/year are calendrical and need a relativeTo anchor.
|
|
39
|
+
amount = resolveRelativeRounding(calendarTotal(unit), options.roundingMethod);
|
|
40
|
+
}
|
|
41
|
+
return normalizeDateTime(new Intl.RelativeTimeFormat(locale, {
|
|
42
|
+
numeric: options.numeric === undefined ? "auto" : options.numeric,
|
|
43
|
+
style: options.style === undefined ? "long" : options.style,
|
|
44
|
+
}).format(amount, unit));
|
|
45
|
+
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import type { LocalesArgument } from "./resolveLocale.js";
|
|
1
2
|
/**
|
|
2
3
|
* Resolve the ISO day-of-week number (1 = Monday .. 7 = Sunday) that a
|
|
3
|
-
* locale considers the first day of the week,
|
|
4
|
-
* `Intl.Locale
|
|
4
|
+
* locale considers the first day of the week, from its CLDR week data
|
|
5
|
+
* (`Intl.Locale#getWeekInfo`, or the older `weekInfo` accessor — see
|
|
6
|
+
* `localeWeekInfo`).
|
|
5
7
|
*
|
|
6
|
-
* - Returns `null` if `locale` is not a
|
|
8
|
+
* - Returns `null` if `locale` is not a well-formed BCP 47 tag; a well-formed tag with no
|
|
9
|
+
* locale data does not throw, so it does not return `null` either.
|
|
7
10
|
* - Falls back to `1` (Monday, matching GMT's existing ISO default in
|
|
8
|
-
* `startOfDate`/`startOfZoned`) if
|
|
9
|
-
*
|
|
11
|
+
* `startOfDate`/`startOfZoned`) if the runtime exposes no week data or
|
|
12
|
+
* none for the given locale.
|
|
10
13
|
*/
|
|
11
|
-
export declare function getLocaleFirstDayOfWeek(locale:
|
|
14
|
+
export declare function getLocaleFirstDayOfWeek(locale: LocalesArgument): number | null;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
// `getLocaleWeekendDays.ts` (TS's lib.d.ts doesn't declare it as of TS 5.9).
|
|
3
|
-
// Declared once there; this file relies on that global augmentation rather
|
|
4
|
-
// than redeclaring it.
|
|
1
|
+
import { localeWeekInfo } from "./localeWeekInfo.js";
|
|
5
2
|
/**
|
|
6
3
|
* Resolve the ISO day-of-week number (1 = Monday .. 7 = Sunday) that a
|
|
7
|
-
* locale considers the first day of the week,
|
|
8
|
-
* `Intl.Locale
|
|
4
|
+
* locale considers the first day of the week, from its CLDR week data
|
|
5
|
+
* (`Intl.Locale#getWeekInfo`, or the older `weekInfo` accessor — see
|
|
6
|
+
* `localeWeekInfo`).
|
|
9
7
|
*
|
|
10
|
-
* - Returns `null` if `locale` is not a
|
|
8
|
+
* - Returns `null` if `locale` is not a well-formed BCP 47 tag; a well-formed tag with no
|
|
9
|
+
* locale data does not throw, so it does not return `null` either.
|
|
11
10
|
* - Falls back to `1` (Monday, matching GMT's existing ISO default in
|
|
12
|
-
* `startOfDate`/`startOfZoned`) if
|
|
13
|
-
*
|
|
11
|
+
* `startOfDate`/`startOfZoned`) if the runtime exposes no week data or
|
|
12
|
+
* none for the given locale.
|
|
14
13
|
*/
|
|
15
14
|
export function getLocaleFirstDayOfWeek(locale) {
|
|
16
15
|
try {
|
|
17
|
-
const weekInfo =
|
|
16
|
+
const weekInfo = localeWeekInfo(locale);
|
|
18
17
|
if (!weekInfo || typeof weekInfo.firstDay !== "number") {
|
|
19
18
|
return 1;
|
|
20
19
|
}
|