@northguild/gmt 1.19.0 → 1.20.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 +12 -12
- package/dist/calendar/business/businessDaysBetween.d.ts +2 -2
- package/dist/calendar/business/businessDaysBetween.js +11 -35
- package/dist/calendar/business/mergeCalendars.d.ts +1 -1
- package/dist/calendar/business/mergeCalendars.js +8 -9
- package/dist/calendar/business/nextBusinessDay.d.ts +2 -2
- package/dist/calendar/business/nextBusinessDay.js +2 -2
- package/dist/calendar/business/previousBusinessDay.d.ts +2 -2
- package/dist/calendar/business/previousBusinessDay.js +2 -2
- package/dist/calendar/business/rollDate.d.ts +3 -3
- package/dist/calendar/business/rollDate.js +10 -43
- package/dist/calendar/calculate/bucketRange.d.ts +9 -9
- package/dist/calendar/calculate/bucketRange.js +9 -9
- package/dist/calendar/calculate/floorToZone.d.ts +2 -2
- package/dist/calendar/calculate/floorToZone.js +1 -1
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +50 -40
- package/dist/calendar/calculate/getFiscalPeriod.js +78 -57
- package/dist/calendar/calculate/getQuarter.d.ts +26 -21
- package/dist/calendar/calculate/getQuarter.js +48 -19
- package/dist/calendar/hours/addOperatingTime.d.ts +3 -3
- package/dist/calendar/hours/addOperatingTime.js +3 -3
- package/dist/calendar/hours/isOpenAt.d.ts +3 -3
- package/dist/calendar/hours/isOpenAt.js +3 -3
- package/dist/calendar/hours/nextCloseAt.d.ts +2 -2
- package/dist/calendar/hours/nextCloseAt.js +2 -2
- package/dist/calendar/hours/nextOpenAt.d.ts +3 -3
- package/dist/calendar/hours/nextOpenAt.js +3 -3
- package/dist/calendar/hours/operatingIntervals.d.ts +2 -2
- package/dist/calendar/hours/operatingIntervals.js +4 -6
- package/dist/calendar/hours/operatingTimeBetween.d.ts +3 -3
- package/dist/calendar/hours/operatingTimeBetween.js +6 -8
- package/dist/calendar/hours/recurringWindows.d.ts +5 -5
- package/dist/calendar/hours/recurringWindows.js +9 -10
- package/dist/calendar/index.d.ts +1 -1
- package/dist/calendar/index.js +2 -2
- package/dist/calendar/validate/index.d.ts +3 -0
- package/dist/calendar/validate/index.js +3 -0
- package/dist/calendar/validate/isValidFiscalCalendar.d.ts +23 -0
- package/dist/calendar/validate/isValidFiscalCalendar.js +44 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.d.ts +19 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.js +23 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +7 -7
- package/dist/calendar/validate/isValidFiscalPattern.js +7 -7
- package/dist/calendar/validate/isValidFiscalYearLabel.d.ts +20 -0
- package/dist/calendar/validate/isValidFiscalYearLabel.js +24 -0
- package/dist/calendar/validate/isValidRollConvention.js +2 -10
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +1 -1
- package/dist/duration/calculate/absDuration.js +1 -1
- package/dist/duration/calculate/addDuration.js +1 -1
- package/dist/duration/calculate/durationFromUnits.js +1 -1
- package/dist/duration/calculate/getDurationSign.js +1 -1
- package/dist/duration/calculate/getDurationUnit.d.ts +1 -1
- package/dist/duration/calculate/getDurationUnit.js +1 -1
- package/dist/duration/calculate/negateDuration.js +1 -1
- package/dist/duration/calculate/subtractDuration.js +1 -1
- package/dist/duration/calculate/totalDuration.d.ts +4 -4
- package/dist/duration/calculate/totalDuration.js +4 -4
- package/dist/duration/calculate/totalUnits.js +1 -1
- package/dist/duration/compare/compareDurations.d.ts +3 -3
- package/dist/duration/compare/compareDurations.js +3 -3
- package/dist/duration/format/formatDuration.d.ts +9 -9
- package/dist/duration/format/formatDuration.js +14 -13
- package/dist/duration/index.d.ts +1 -1
- package/dist/duration/index.js +2 -2
- package/dist/duration/normalize/normalizeDuration.d.ts +3 -3
- package/dist/duration/normalize/normalizeDuration.js +3 -3
- package/dist/duration/parse/parseDuration.d.ts +1 -1
- package/dist/duration/parse/parseDuration.js +1 -1
- package/dist/duration/validate/isValidDuration.js +2 -11
- package/dist/gnss/convert/gnssToUtc.d.ts +24 -0
- package/dist/gnss/convert/gnssToUtc.js +39 -0
- package/dist/gnss/convert/gnssWeekToUtc.d.ts +53 -0
- package/dist/gnss/convert/gnssWeekToUtc.js +80 -0
- package/dist/gnss/convert/index.d.ts +6 -0
- package/dist/gnss/convert/index.js +6 -0
- package/dist/gnss/convert/rinexWeekToUtc.d.ts +34 -0
- package/dist/gnss/convert/rinexWeekToUtc.js +57 -0
- package/dist/gnss/convert/utcToGnss.d.ts +38 -0
- package/dist/gnss/convert/utcToGnss.js +53 -0
- package/dist/gnss/convert/utcToGnssWeek.d.ts +24 -0
- package/dist/gnss/convert/utcToGnssWeek.js +40 -0
- package/dist/gnss/convert/utcToRinexWeek.d.ts +19 -0
- package/dist/gnss/convert/utcToRinexWeek.js +45 -0
- package/dist/gnss/index.d.ts +2 -0
- package/dist/gnss/index.js +3 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/instant/convert/classifyLocal.d.ts +4 -4
- package/dist/instant/convert/classifyLocal.js +8 -19
- package/dist/instant/convert/fromOffsetInstant.d.ts +4 -4
- package/dist/instant/convert/fromOffsetInstant.js +5 -5
- package/dist/instant/convert/resolveLocal.d.ts +9 -9
- package/dist/instant/convert/resolveLocal.js +9 -9
- package/dist/instant/convert/toOffsetInstant.d.ts +11 -11
- package/dist/instant/convert/toOffsetInstant.js +11 -28
- package/dist/instant/index.d.ts +1 -1
- package/dist/instant/index.js +2 -2
- package/dist/instant/validate/isValidUtcOffset.d.ts +1 -1
- package/dist/instant/validate/isValidUtcOffset.js +1 -1
- package/dist/intermodal/calculate/billingTimeline.js +1 -1
- package/dist/intermodal/calculate/chargeableDays.d.ts +12 -12
- package/dist/intermodal/calculate/chargeableDays.js +17 -16
- package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
- package/dist/intermodal/calculate/demurrageClock.js +2 -2
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +10 -10
- package/dist/intermodal/calculate/freeTimeExpiry.js +19 -15
- package/dist/intermodal/calculate/multimodalETA.d.ts +1 -1
- package/dist/intermodal/calculate/multimodalETA.js +2 -2
- package/dist/intermodal/format/bolTimestamp.d.ts +6 -6
- package/dist/intermodal/format/bolTimestamp.js +6 -6
- package/dist/intermodal/format/formatEpcisEvent.d.ts +1 -1
- package/dist/intermodal/format/formatEpcisEvent.js +2 -2
- package/dist/intermodal/index.d.ts +1 -1
- package/dist/intermodal/index.js +2 -2
- package/dist/intermodal/parse/parseEpcisEvent.js +1 -1
- package/dist/intermodal/validate/isValidEpcisEventTime.js +1 -1
- package/dist/internal/advanceToWeekday.d.ts +1 -1
- package/dist/internal/businessCalendar.d.ts +28 -12
- package/dist/internal/businessCalendar.js +129 -118
- package/dist/internal/businessDayValues.js +1 -1
- package/dist/internal/calendarDatePairPolicy.d.ts +1 -1
- package/dist/internal/calendarDateString.d.ts +1 -1
- package/dist/internal/calendarDateString.js +1 -1
- package/dist/internal/calendarSystemIds.js +1 -1
- package/dist/internal/calendarValueOfDate.js +1 -1
- package/dist/internal/calendarZonedPairPolicy.d.ts +1 -1
- package/dist/internal/calendarZonedString.d.ts +3 -3
- package/dist/internal/calendarZonedString.js +4 -4
- package/dist/internal/compareUnixEpochs.js +1 -1
- package/dist/internal/cutoffAtResolved.d.ts +62 -0
- package/dist/internal/cutoffAtResolved.js +162 -0
- package/dist/internal/cycleFieldValue.d.ts +0 -2
- package/dist/internal/cycleFieldValue.js +0 -2
- package/dist/internal/dateTimeUnitHelpers.d.ts +1 -1
- package/dist/internal/dateUnitHelpers.d.ts +1 -1
- package/dist/internal/daylightTime.d.ts +1 -1
- package/dist/internal/differenceRecord.d.ts +1 -1
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +1 -1
- package/dist/internal/dutyEngine.d.ts +6 -6
- package/dist/internal/dutyEngine.js +206 -197
- package/dist/internal/dutyPeriods.d.ts +1 -1
- package/dist/internal/dutyPeriods.js +8 -2
- package/dist/internal/dutyRules.d.ts +2 -1
- package/dist/internal/dutyRules.js +1 -1
- package/dist/internal/dutyRunIndex.d.ts +150 -0
- package/dist/internal/dutyRunIndex.js +398 -0
- package/dist/internal/earlierOccurrence.d.ts +41 -0
- package/dist/internal/earlierOccurrence.js +57 -0
- package/dist/internal/ediDateTimeFields.js +1 -1
- package/dist/internal/ediDateTimeWriter.js +1 -1
- package/dist/internal/englishCalendarNames.d.ts +1 -1
- package/dist/internal/epochDay.d.ts +41 -0
- package/dist/internal/epochDay.js +129 -0
- package/dist/internal/exactDuration.js +1 -1
- package/dist/internal/exactMoment.d.ts +4 -4
- package/dist/internal/exactMoment.js +5 -5
- package/dist/internal/fiscalCalendar.d.ts +41 -7
- package/dist/internal/fiscalCalendar.js +77 -9
- package/dist/internal/foreignEpochs.d.ts +5 -0
- package/dist/internal/foreignEpochs.js +5 -0
- package/dist/internal/formatCalendarDays.d.ts +4 -4
- package/dist/internal/formatCalendarDays.js +6 -5
- package/dist/internal/formatDateInCalendar.d.ts +1 -1
- package/dist/internal/formatRelativeDuration.d.ts +7 -7
- package/dist/internal/formatRelativeDuration.js +8 -7
- package/dist/internal/formatterCache.d.ts +40 -0
- package/dist/internal/formatterCache.js +181 -0
- package/dist/internal/freeTimeLedger.d.ts +31 -43
- package/dist/internal/freeTimeLedger.js +322 -30
- package/dist/internal/getLocaleWeekYearBounds.d.ts +1 -1
- package/dist/internal/gnssTimeScales.d.ts +53 -0
- package/dist/internal/gnssTimeScales.js +128 -0
- package/dist/internal/gnssWeek.d.ts +92 -0
- package/dist/internal/gnssWeek.js +212 -0
- package/dist/internal/halfOpenIntervals.d.ts +1 -1
- package/dist/internal/halfOpenIntervals.js +1 -1
- package/dist/internal/hasCalendarAnnotation.d.ts +3 -3
- package/dist/internal/hasCalendarAnnotation.js +3 -3
- package/dist/internal/hourDurationString.js +1 -1
- package/dist/internal/httpDateFields.js +1 -1
- package/dist/internal/index.d.ts +9 -3
- package/dist/internal/index.js +9 -3
- package/dist/internal/inputChecks.d.ts +53 -0
- package/dist/internal/inputChecks.js +132 -0
- package/dist/internal/instantFormatOptions.d.ts +1 -1
- package/dist/internal/instantFormatOptions.js +4 -8
- package/dist/internal/instantIntervalText.js +1 -1
- package/dist/internal/instantNanoseconds.d.ts +2 -2
- package/dist/internal/instantNanoseconds.js +2 -2
- package/dist/internal/intervalCountHelpers.d.ts +1 -1
- package/dist/internal/isoStringBody.d.ts +2 -2
- package/dist/internal/isoStringBody.js +2 -2
- package/dist/internal/joinDateTimeConnector.js +3 -2
- package/dist/internal/leapSeconds.d.ts +63 -0
- package/dist/internal/leapSeconds.js +162 -0
- package/dist/internal/localeWeekInfo.d.ts +1 -1
- package/dist/internal/localeWeekInfo.js +1 -1
- package/dist/internal/monthGridWeekRow.d.ts +1 -1
- package/dist/internal/normalizeDateTime.d.ts +2 -1
- package/dist/internal/normalizeDateTime.js +3 -2
- package/dist/internal/normalizeTimeZone.d.ts +1 -1
- package/dist/internal/normalizeTimeZone.js +1 -1
- package/dist/internal/offsetTimeline.d.ts +56 -0
- package/dist/internal/offsetTimeline.js +166 -0
- package/dist/internal/operatingSchedule.d.ts +28 -32
- package/dist/internal/operatingSchedule.js +538 -176
- package/dist/internal/patternToken.js +10 -7
- package/dist/internal/plainDateAdd.d.ts +1 -1
- package/dist/internal/plainDateAdd.js +1 -1
- package/dist/internal/plainDateUntil.d.ts +1 -1
- package/dist/internal/plainDateUntil.js +1 -1
- package/dist/internal/readSetFields.js +1 -1
- package/dist/internal/resolveDurationRelativeTo.d.ts +1 -1
- package/dist/internal/resolveDurationRelativeTo.js +1 -1
- package/dist/internal/resolveLocale.d.ts +2 -2
- package/dist/internal/resolveLocale.js +2 -2
- package/dist/internal/resolveManualRoundingOptions.d.ts +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +1 -1
- package/dist/internal/rinexWeek.d.ts +22 -0
- package/dist/internal/rinexWeek.js +30 -0
- package/dist/internal/rollBusinessDate.d.ts +15 -0
- package/dist/internal/rollBusinessDate.js +46 -0
- package/dist/internal/splitStep.d.ts +1 -1
- package/dist/internal/splitStep.js +1 -1
- package/dist/internal/startOrEndOfUnix.d.ts +1 -1
- package/dist/internal/startOrEndOfUtc.d.ts +1 -1
- package/dist/internal/startOrEndOfUtc.js +1 -1
- package/dist/internal/startOrEndOfZoned.d.ts +1 -1
- package/dist/internal/temporal.d.ts +5 -0
- package/dist/internal/temporal.js +5 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.js +1 -1
- package/dist/internal/temporalCompat/calendarFields.d.ts +1 -1
- package/dist/internal/temporalCompat/capabilities.d.ts +27 -5
- package/dist/internal/temporalCompat/capabilities.js +28 -4
- package/dist/internal/temporalCompat/fieldSearch.d.ts +1 -1
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/fixedDay.d.ts +1 -1
- package/dist/internal/temporalCompat/fixedDay.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/largeMonthSpan.js +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +1 -1
- package/dist/internal/temporalCompat/probeRepros.d.ts +35 -0
- package/dist/internal/temporalCompat/probeRepros.js +571 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +2 -2
- package/dist/internal/temporalCompat/repros.d.ts +3 -10
- package/dist/internal/temporalCompat/repros.js +13 -520
- package/dist/internal/timeScaleString.d.ts +47 -0
- package/dist/internal/timeScaleString.js +86 -0
- package/dist/internal/toInstantFromUtc.d.ts +1 -1
- package/dist/internal/toInstantFromUtc.js +1 -1
- package/dist/internal/unixEpochValue.d.ts +1 -1
- package/dist/internal/unixEpochValue.js +1 -1
- package/dist/internal/unixFormatReference.d.ts +1 -1
- package/dist/internal/unixFormatReference.js +1 -1
- package/dist/internal/unixWallClock.d.ts +1 -1
- package/dist/internal/utcOffsetString.d.ts +16 -0
- package/dist/internal/utcOffsetString.js +31 -1
- package/dist/internal/utcReading.d.ts +59 -0
- package/dist/internal/utcReading.js +113 -0
- package/dist/internal/utcWallClock.d.ts +1 -1
- package/dist/internal/utcWallClock.js +1 -1
- package/dist/internal/validatedZones.d.ts +20 -0
- package/dist/internal/validatedZones.js +33 -0
- package/dist/internal/wallClockAtOffset.d.ts +1 -1
- package/dist/internal/yearWindowStart.js +1 -1
- package/dist/internal/zoneBucketCap.d.ts +1 -1
- package/dist/internal/zoneBucketCap.js +2 -2
- package/dist/internal/zoneFrame.d.ts +4 -4
- package/dist/internal/zoneFrame.js +4 -4
- package/dist/internal/zonedBucket.d.ts +2 -2
- package/dist/internal/zonedBucket.js +92 -21
- package/dist/internal/zonedFormatReference.d.ts +1 -1
- package/dist/internal/zonedFormatReference.js +1 -1
- package/dist/internal/zonedLocalDates.d.ts +1 -1
- package/dist/internal/zonedLocalDates.js +22 -19
- package/dist/internal/zonedNowUnitValue.d.ts +1 -1
- package/dist/internal/zonedNowUnitValue.js +1 -1
- package/dist/internal/zonedTransitionSearch.d.ts +2 -0
- package/dist/internal/zonedTransitionSearch.js +165 -16
- package/dist/internal/zonedWallClock.d.ts +15 -4
- package/dist/internal/zonedWallClock.js +34 -6
- package/dist/internal/zonedWallClockDifference.d.ts +1 -1
- package/dist/internal/zonedWallClockDifference.js +2 -2
- package/dist/internal/zonedWallClockOperations.d.ts +2 -2
- package/dist/internal/zonedWallClockOperations.js +51 -6
- package/dist/internal/zonelessCalendarDate.d.ts +1 -1
- package/dist/internal/zonelessCalendarDate.js +1 -1
- package/dist/interval/index.d.ts +1 -1
- package/dist/interval/index.js +2 -2
- package/dist/plain/calculate/addBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/addBusinessDays.js +2 -2
- package/dist/plain/calculate/addDateTime.js +1 -1
- package/dist/plain/calculate/addTime.js +1 -1
- package/dist/plain/calculate/clampDate.js +1 -1
- package/dist/plain/calculate/closestDateTo.js +1 -1
- package/dist/plain/calculate/cycleDate.js +1 -1
- package/dist/plain/calculate/cycleDateTime.js +1 -1
- package/dist/plain/calculate/cycleTime.js +1 -1
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateTime.d.ts +1 -1
- package/dist/plain/calculate/diffDateTime.js +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
- package/dist/plain/calculate/diffTime.d.ts +1 -1
- package/dist/plain/calculate/diffTime.js +1 -1
- package/dist/plain/calculate/endOfDate.d.ts +1 -1
- package/dist/plain/calculate/endOfDate.js +1 -1
- package/dist/plain/calculate/endOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/endOfDateTime.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/endOfTime.d.ts +1 -1
- package/dist/plain/calculate/endOfTime.js +1 -1
- package/dist/plain/calculate/getDayOfYear.js +1 -1
- package/dist/plain/calculate/getDaysInMonth.js +1 -1
- package/dist/plain/calculate/getDaysInYear.js +1 -1
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +6 -6
- package/dist/plain/calculate/getLocaleDayOfWeek.js +7 -7
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +4 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.js +6 -6
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +10 -10
- package/dist/plain/calculate/getLocaleWeekYear.js +11 -11
- package/dist/plain/calculate/getQuarterForDate.js +1 -1
- package/dist/plain/calculate/getQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/getWeekNumber.js +1 -1
- package/dist/plain/calculate/getWeekOfMonth.d.ts +10 -14
- package/dist/plain/calculate/getWeekOfMonth.js +11 -15
- package/dist/plain/calculate/getWeekYear.js +1 -1
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +7 -7
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +8 -8
- package/dist/plain/calculate/getWeeksInMonth.d.ts +8 -11
- package/dist/plain/calculate/getWeeksInMonth.js +9 -12
- package/dist/plain/calculate/getWeeksInYear.js +1 -1
- package/dist/plain/calculate/maxDate.js +1 -1
- package/dist/plain/calculate/maxDateTime.js +1 -1
- package/dist/plain/calculate/maxTime.js +1 -1
- package/dist/plain/calculate/minDate.js +1 -1
- package/dist/plain/calculate/minDateTime.js +1 -1
- package/dist/plain/calculate/minTime.js +1 -1
- package/dist/plain/calculate/nextWeekday.d.ts +14 -12
- package/dist/plain/calculate/nextWeekday.js +15 -13
- package/dist/plain/calculate/previousWeekday.d.ts +14 -12
- package/dist/plain/calculate/previousWeekday.js +15 -13
- package/dist/plain/calculate/roundDate.d.ts +1 -1
- package/dist/plain/calculate/roundDate.js +1 -1
- package/dist/plain/calculate/roundDateTime.d.ts +1 -1
- package/dist/plain/calculate/roundDateTime.js +1 -1
- package/dist/plain/calculate/roundTime.d.ts +1 -1
- package/dist/plain/calculate/roundTime.js +1 -1
- package/dist/plain/calculate/setDate.d.ts +1 -1
- package/dist/plain/calculate/setDate.js +1 -1
- package/dist/plain/calculate/setDateTime.d.ts +1 -1
- package/dist/plain/calculate/setDateTime.js +1 -1
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +1 -1
- package/dist/plain/calculate/sortDateTimes.js +1 -1
- package/dist/plain/calculate/sortDates.js +1 -1
- package/dist/plain/calculate/sortTimes.js +1 -1
- package/dist/plain/calculate/startOfDate.d.ts +1 -1
- package/dist/plain/calculate/startOfDate.js +1 -1
- package/dist/plain/calculate/startOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/startOfDateTime.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/startOfTime.d.ts +1 -1
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/subtractBusinessDays.js +2 -2
- package/dist/plain/calculate/subtractDate.js +1 -1
- package/dist/plain/calculate/subtractDateTime.js +1 -1
- package/dist/plain/calculate/subtractTime.js +1 -1
- package/dist/plain/calculate/weekOfYearForDate.js +1 -1
- package/dist/plain/calculate/weekOfYearForDateTime.js +1 -1
- package/dist/plain/chop/chopDate.js +1 -1
- package/dist/plain/chop/chopMilliseconds.js +1 -1
- package/dist/plain/chop/chopSeconds.js +1 -1
- package/dist/plain/chop/chopTime.js +1 -1
- package/dist/plain/compare/areDateTimesEqual.js +1 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +2 -4
- package/dist/plain/compare/areDateTimesEqualBy.js +2 -4
- package/dist/plain/compare/areDatesEqual.js +1 -1
- package/dist/plain/compare/areDatesEqualBy.d.ts +5 -5
- package/dist/plain/compare/areDatesEqualBy.js +5 -5
- package/dist/plain/compare/areTimesEqual.js +1 -1
- package/dist/plain/compare/isAfterDate.js +1 -1
- package/dist/plain/compare/isAfterDateTime.js +1 -1
- package/dist/plain/compare/isAfterTime.js +1 -1
- package/dist/plain/compare/isBeforeDate.js +1 -1
- package/dist/plain/compare/isBeforeDateTime.js +1 -1
- package/dist/plain/compare/isBeforeTime.js +1 -1
- package/dist/plain/compare/isBetweenDate.js +1 -1
- package/dist/plain/compare/isBetweenDateTime.js +1 -1
- package/dist/plain/compare/isBetweenTime.js +1 -1
- package/dist/plain/compare/isBusinessDay.d.ts +2 -2
- package/dist/plain/compare/isBusinessDay.js +3 -3
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +8 -6
- package/dist/plain/compare/isThisUnit.js +7 -5
- package/dist/plain/compare/isWeekend.d.ts +5 -5
- package/dist/plain/compare/isWeekend.js +6 -6
- package/dist/plain/format/formatCalendar.d.ts +3 -5
- package/dist/plain/format/formatCalendar.js +10 -9
- package/dist/plain/format/formatDate.d.ts +4 -4
- package/dist/plain/format/formatDate.js +8 -7
- package/dist/plain/format/formatDateRange.d.ts +4 -4
- package/dist/plain/format/formatDateRange.js +8 -7
- package/dist/plain/format/formatDateTime.d.ts +4 -4
- package/dist/plain/format/formatDateTime.js +8 -7
- package/dist/plain/format/formatDateTimeRange.d.ts +4 -4
- package/dist/plain/format/formatDateTimeRange.js +8 -7
- package/dist/plain/format/formatDateTimeToParts.d.ts +6 -6
- package/dist/plain/format/formatDateTimeToParts.js +10 -9
- package/dist/plain/format/formatDateToParts.d.ts +6 -6
- package/dist/plain/format/formatDateToParts.js +10 -9
- package/dist/plain/format/formatRelativeDate.d.ts +3 -3
- package/dist/plain/format/formatRelativeDate.js +4 -4
- package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeDateTime.js +4 -4
- package/dist/plain/format/formatRelativeTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeTime.js +4 -4
- package/dist/plain/format/formatSqlDateTime.js +1 -1
- package/dist/plain/format/formatTime.d.ts +4 -4
- package/dist/plain/format/formatTime.js +8 -7
- package/dist/plain/get/getDay.js +1 -1
- package/dist/plain/get/getDayOfWeek.js +1 -1
- package/dist/plain/get/getHour.js +1 -1
- package/dist/plain/get/getMicrosecond.js +1 -1
- package/dist/plain/get/getMillisecond.js +1 -1
- package/dist/plain/get/getMinute.js +1 -1
- package/dist/plain/get/getMonth.js +1 -1
- package/dist/plain/get/getNanosecond.js +1 -1
- package/dist/plain/get/getNow.js +1 -1
- package/dist/plain/get/getNowUnit.js +1 -1
- package/dist/plain/get/getSecond.js +1 -1
- package/dist/plain/get/getToday.js +1 -1
- package/dist/plain/get/getWeekOfYear.js +1 -1
- package/dist/plain/get/getYear.js +1 -1
- package/dist/plain/index.d.ts +1 -1
- package/dist/plain/index.js +2 -2
- package/dist/plain/interval/intervalAbutsDate.d.ts +1 -2
- package/dist/plain/interval/intervalAbutsDate.js +2 -3
- package/dist/plain/interval/intervalAbutsDateTime.js +1 -1
- package/dist/plain/interval/intervalAbutsTime.js +1 -1
- package/dist/plain/interval/intervalContainsDate.d.ts +1 -1
- package/dist/plain/interval/intervalContainsDate.js +2 -2
- package/dist/plain/interval/intervalContainsDateTime.js +1 -1
- package/dist/plain/interval/intervalContainsTime.js +1 -1
- package/dist/plain/interval/intervalCountDate.js +1 -1
- package/dist/plain/interval/intervalCountDateTime.js +1 -1
- package/dist/plain/interval/intervalCountTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceDate.d.ts +1 -1
- package/dist/plain/interval/intervalDifferenceDate.js +2 -2
- package/dist/plain/interval/intervalDifferenceDateTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +3 -3
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -3
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsDate.d.ts +1 -1
- package/dist/plain/interval/intervalEngulfsDate.js +2 -2
- package/dist/plain/interval/intervalEngulfsDateTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationDate.js +1 -1
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionDate.d.ts +1 -1
- package/dist/plain/interval/intervalIntersectionDate.js +2 -2
- package/dist/plain/interval/intervalIntersectionDateTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionTime.js +1 -1
- package/dist/plain/interval/intervalLengthDateTime.js +1 -1
- package/dist/plain/interval/intervalLengthTime.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDate.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtDate.d.ts +1 -1
- package/dist/plain/interval/intervalSplitAtDate.js +2 -2
- package/dist/plain/interval/intervalSplitAtDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtTime.js +1 -1
- package/dist/plain/interval/intervalUnionDate.d.ts +2 -2
- package/dist/plain/interval/intervalUnionDate.js +3 -3
- package/dist/plain/interval/intervalUnionDateTime.js +1 -1
- package/dist/plain/interval/intervalUnionTime.js +1 -1
- package/dist/plain/interval/intervalXorAllDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.js +1 -1
- package/dist/plain/interval/intervalXorAllTime.js +1 -1
- package/dist/plain/interval/intervalXorDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorDate.js +2 -2
- package/dist/plain/interval/intervalXorDateTime.js +1 -1
- package/dist/plain/interval/intervalXorTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapDate.d.ts +1 -1
- package/dist/plain/interval/intervalsOverlapDate.js +2 -2
- package/dist/plain/interval/intervalsOverlapDateTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapTime.js +1 -1
- package/dist/plain/interval/mergeIntervalsDate.d.ts +1 -1
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.js +1 -1
- package/dist/plain/interval/mergeIntervalsTime.js +1 -1
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +2 -3
- package/dist/plain/interval/splitIntervalByUnitDate.js +3 -4
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +2 -1
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +3 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.js +2 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +1 -1
- package/dist/plain/interval/validate/isValidTimeInterval.js +1 -1
- package/dist/plain/locale/getLocaleEraNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleEraNames.js +8 -7
- package/dist/plain/locale/getLocaleMeridiems.d.ts +5 -5
- package/dist/plain/locale/getLocaleMeridiems.js +7 -6
- package/dist/plain/locale/getLocaleMonthNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleMonthNames.js +17 -11
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +3 -3
- package/dist/plain/locale/getLocaleWeekdayNames.js +12 -5
- package/dist/plain/map/mapDatesInRange.js +1 -1
- package/dist/plain/map/mapDaysInMonth.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +14 -13
- package/dist/plain/parse/parseDateTimeWithPattern.js +15 -14
- package/dist/plain/parse/parseDateWithPattern.d.ts +18 -17
- package/dist/plain/parse/parseDateWithPattern.js +19 -18
- package/dist/plain/parse/parseDayFromDate.js +1 -1
- package/dist/plain/parse/parseDayFromDateTime.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDate.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromDateTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromTime.js +1 -1
- package/dist/plain/parse/parseMonthFromDate.js +1 -1
- package/dist/plain/parse/parseMonthFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +1 -1
- package/dist/plain/parse/parseSecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseSecondFromTime.js +1 -1
- package/dist/plain/parse/parseSqlDateTime.js +1 -1
- package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
- package/dist/plain/parse/parseTimeWithPattern.js +7 -5
- package/dist/plain/parse/parseUnitFromDate.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromDate.js +1 -1
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromDateTime.js +1 -1
- package/dist/plain/parse/parseUnitFromTime.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromTime.js +1 -1
- package/dist/plain/parse/parseWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseYearFromDate.js +1 -1
- package/dist/plain/parse/parseYearFromDateTime.js +1 -1
- package/dist/plain/validate/{isLeapSecond.d.ts → hasSecond60.d.ts} +16 -14
- package/dist/plain/validate/{isLeapSecond.js → hasSecond60.js} +16 -14
- package/dist/plain/validate/index.d.ts +1 -1
- package/dist/plain/validate/index.js +1 -1
- package/dist/plain/validate/isLeapYear.js +1 -1
- package/dist/plain/validate/isValidDate.js +2 -17
- package/dist/plain/validate/isValidDateRange.js +1 -1
- package/dist/plain/validate/isValidDateTime.d.ts +1 -1
- package/dist/plain/validate/isValidDateTime.js +4 -4
- package/dist/plain/validate/isValidDateTimeRange.js +1 -1
- package/dist/plain/validate/isValidIsoDateLike.js +3 -3
- package/dist/plain/validate/isValidTime.js +2 -18
- package/dist/plain/validate/isValidTimeRange.js +1 -1
- package/dist/precision/convert/fromNanoseconds.d.ts +2 -2
- package/dist/precision/convert/fromNanoseconds.js +3 -3
- package/dist/precision/convert/toNanoseconds.d.ts +2 -2
- package/dist/precision/convert/toNanoseconds.js +2 -2
- package/dist/precision/index.d.ts +1 -1
- package/dist/precision/index.js +2 -2
- package/dist/precision/validate/isValidInstant.d.ts +1 -1
- package/dist/precision/validate/isValidInstant.js +1 -1
- package/dist/regex/calendar-zoned-date-time.d.ts +4 -4
- package/dist/regex/calendar-zoned-date-time.js +4 -4
- package/dist/regex/index.d.ts +1 -1
- package/dist/regex/index.js +2 -2
- package/dist/regex/leap-second.d.ts +1 -1
- package/dist/regex/leap-second.js +1 -1
- package/dist/regex/time-zone-like.d.ts +2 -2
- package/dist/regex/time-zone-like.js +2 -2
- package/dist/span/calculate/spanMs.d.ts +4 -3
- package/dist/span/calculate/spanMs.js +4 -3
- package/dist/span/calculate/spanNs.d.ts +4 -3
- package/dist/span/calculate/spanNs.js +4 -3
- package/dist/span/calculate/spanWallClock.d.ts +12 -12
- package/dist/span/calculate/spanWallClock.js +13 -13
- package/dist/span/index.d.ts +1 -1
- package/dist/span/index.js +2 -2
- package/dist/span/validate/isValidSpan.d.ts +3 -3
- package/dist/span/validate/isValidSpan.js +3 -3
- package/dist/timescale/calculate/index.d.ts +3 -0
- package/dist/timescale/calculate/index.js +3 -0
- package/dist/timescale/calculate/leapSecondsBetween.d.ts +26 -0
- package/dist/timescale/calculate/leapSecondsBetween.js +62 -0
- package/dist/timescale/calculate/nextLeapSecond.d.ts +18 -0
- package/dist/timescale/calculate/nextLeapSecond.js +33 -0
- package/dist/timescale/calculate/taiMinusUtc.d.ts +21 -0
- package/dist/timescale/calculate/taiMinusUtc.js +38 -0
- package/dist/timescale/convert/fromTAI.d.ts +22 -0
- package/dist/timescale/convert/fromTAI.js +35 -0
- package/dist/timescale/convert/index.d.ts +2 -0
- package/dist/timescale/convert/index.js +2 -0
- package/dist/timescale/convert/toTAI.d.ts +23 -0
- package/dist/timescale/convert/toTAI.js +39 -0
- package/dist/timescale/index.d.ts +4 -0
- package/dist/timescale/index.js +5 -0
- package/dist/timescale/validate/index.d.ts +1 -0
- package/dist/timescale/validate/index.js +1 -0
- package/dist/timescale/validate/isLeapSecond.d.ts +25 -0
- package/dist/timescale/validate/isLeapSecond.js +36 -0
- package/dist/transport/calculate/crossingTime.d.ts +2 -2
- package/dist/transport/calculate/crossingTime.js +3 -3
- package/dist/transport/calculate/cutoffAt.d.ts +4 -4
- package/dist/transport/calculate/cutoffAt.js +24 -133
- package/dist/transport/calculate/cutoffSchedule.d.ts +2 -2
- package/dist/transport/calculate/cutoffSchedule.js +52 -20
- package/dist/transport/calculate/dwellTime.d.ts +3 -3
- package/dist/transport/calculate/dwellTime.js +4 -4
- package/dist/transport/calculate/estimateDrift.d.ts +1 -1
- package/dist/transport/calculate/estimateDrift.js +1 -1
- package/dist/transport/calculate/nextDeparture.d.ts +2 -2
- package/dist/transport/calculate/nextDeparture.js +2 -2
- package/dist/transport/calculate/scheduleDelivery.d.ts +2 -2
- package/dist/transport/calculate/scheduleDelivery.js +3 -3
- package/dist/transport/calculate/transitTime.d.ts +11 -11
- package/dist/transport/calculate/transitTime.js +11 -11
- package/dist/transport/compare/classifyPunctuality.d.ts +1 -1
- package/dist/transport/compare/classifyPunctuality.js +1 -1
- package/dist/transport/compare/isPastCutoff.d.ts +1 -1
- package/dist/transport/compare/isPastCutoff.js +2 -2
- package/dist/transport/compare/scheduleDeviation.d.ts +1 -1
- package/dist/transport/compare/scheduleDeviation.js +1 -1
- package/dist/transport/compare/timeToCutoff.d.ts +1 -1
- package/dist/transport/compare/timeToCutoff.js +1 -1
- package/dist/transport/convert/etaAtZone.d.ts +2 -2
- package/dist/transport/convert/etaAtZone.js +2 -2
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/types/date-duration-unit.d.ts +1 -1
- package/dist/types/date-time-duration-units.d.ts +1 -1
- package/dist/types/date-time-unit.d.ts +1 -1
- package/dist/types/date-unit.d.ts +1 -1
- package/dist/types/disambiguation.d.ts +1 -1
- package/dist/types/duration-relative-to.d.ts +1 -1
- package/dist/types/duration-string-options.d.ts +1 -1
- package/dist/types/exact-duration-unit.d.ts +1 -1
- package/dist/types/fiscal-calendar.d.ts +40 -4
- package/dist/types/gnss.d.ts +51 -0
- package/dist/types/gnss.js +0 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/offset.d.ts +1 -1
- package/dist/types/overflow.d.ts +1 -1
- package/dist/types/rounding-options.d.ts +1 -1
- package/dist/types/stored-zoned-classification.d.ts +83 -0
- package/dist/types/stored-zoned-classification.js +0 -0
- package/dist/types/time-duration-unit.d.ts +1 -1
- package/dist/types/time-unit.d.ts +1 -1
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/unix/calculate/diffUnix.d.ts +1 -1
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +1 -1
- package/dist/unix/calculate/endOfUnix.d.ts +2 -2
- package/dist/unix/calculate/endOfUnix.js +1 -1
- package/dist/unix/calculate/isBetweenUnix.js +1 -1
- package/dist/unix/calculate/roundUnix.d.ts +7 -5
- package/dist/unix/calculate/roundUnix.js +6 -4
- package/dist/unix/calculate/setUnix.d.ts +3 -3
- package/dist/unix/calculate/setUnix.js +2 -2
- package/dist/unix/calculate/startOfUnix.d.ts +2 -2
- package/dist/unix/calculate/startOfUnix.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +6 -6
- package/dist/unix/compare/areUnixEqualBy.js +5 -5
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +1 -1
- package/dist/unix/convert/convertUnixToPlainTime.js +1 -1
- package/dist/unix/convert/convertUnixToZoned.d.ts +1 -1
- package/dist/unix/convert/convertUnixToZoned.js +1 -1
- package/dist/unix/format/formatCalendarUnix.d.ts +10 -9
- package/dist/unix/format/formatCalendarUnix.js +6 -6
- package/dist/unix/format/formatRelativeUnix.d.ts +7 -7
- package/dist/unix/format/formatRelativeUnix.js +7 -7
- package/dist/unix/format/formatUnix.d.ts +9 -9
- package/dist/unix/format/formatUnix.js +9 -9
- package/dist/unix/get/getUnixDay.js +1 -1
- package/dist/unix/get/getUnixHour.js +1 -1
- package/dist/unix/get/getUnixMicrosecond.js +1 -1
- package/dist/unix/get/getUnixMillisecond.js +1 -1
- package/dist/unix/get/getUnixMinute.js +1 -1
- package/dist/unix/get/getUnixMonth.js +1 -1
- package/dist/unix/get/getUnixNanosecond.js +1 -1
- package/dist/unix/get/getUnixNow.js +1 -1
- package/dist/unix/get/getUnixNowUnit.d.ts +1 -1
- package/dist/unix/get/getUnixNowUnit.js +1 -1
- package/dist/unix/get/getUnixSecond.js +1 -1
- package/dist/unix/get/getUnixYear.js +1 -1
- package/dist/unix/index.d.ts +1 -1
- package/dist/unix/index.js +2 -2
- package/dist/unix/interval/intervalFromDurationUnix.js +1 -1
- package/dist/unix/interval/intervalLengthUnix.d.ts +2 -2
- package/dist/unix/interval/intervalLengthUnix.js +2 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +3 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.js +4 -3
- package/dist/unix/parse/parseUnitFromUnix.d.ts +1 -1
- package/dist/utc/calculate/addUtc.js +1 -1
- package/dist/utc/calculate/diffUtc.d.ts +1 -1
- package/dist/utc/calculate/diffUtc.js +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +1 -1
- package/dist/utc/calculate/isBetweenUtc.js +1 -1
- package/dist/utc/calculate/maxUtc.js +1 -1
- package/dist/utc/calculate/minUtc.js +1 -1
- package/dist/utc/calculate/roundUtc.d.ts +1 -1
- package/dist/utc/calculate/roundUtc.js +1 -1
- package/dist/utc/calculate/setUtc.d.ts +1 -1
- package/dist/utc/calculate/setUtc.js +1 -1
- package/dist/utc/calculate/sortUtc.js +1 -1
- package/dist/utc/calculate/startOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/startOfUtc.d.ts +1 -1
- package/dist/utc/calculate/subtractUtc.js +1 -1
- package/dist/utc/compare/areUtcEqual.js +1 -1
- package/dist/utc/compare/areUtcEqualBy.d.ts +2 -2
- package/dist/utc/compare/areUtcEqualBy.js +2 -2
- package/dist/utc/compare/isAfterUtc.js +1 -1
- package/dist/utc/compare/isBeforeUtc.js +1 -1
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainDate.js +2 -2
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainDateTime.js +2 -2
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainTime.js +2 -2
- package/dist/utc/convert/convertUtcToUnix.js +1 -1
- package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
- package/dist/utc/convert/convertUtcToZoned.js +2 -2
- package/dist/utc/format/formatCalendarUtc.d.ts +6 -5
- package/dist/utc/format/formatCalendarUtc.js +3 -3
- package/dist/utc/format/formatHttpDate.js +1 -1
- package/dist/utc/format/formatRelativeUtc.d.ts +5 -5
- package/dist/utc/format/formatRelativeUtc.js +5 -5
- package/dist/utc/format/formatUtc.d.ts +8 -8
- package/dist/utc/format/formatUtc.js +8 -8
- package/dist/utc/get/getUtcDay.js +1 -1
- package/dist/utc/get/getUtcHour.js +1 -1
- package/dist/utc/get/getUtcMicrosecond.js +1 -1
- package/dist/utc/get/getUtcMillisecond.js +1 -1
- package/dist/utc/get/getUtcMinute.js +1 -1
- package/dist/utc/get/getUtcMonth.js +1 -1
- package/dist/utc/get/getUtcNanosecond.js +1 -1
- package/dist/utc/get/getUtcNow.js +1 -1
- package/dist/utc/get/getUtcNowUnit.js +1 -1
- package/dist/utc/get/getUtcSecond.js +1 -1
- package/dist/utc/get/getUtcYear.js +1 -1
- package/dist/utc/index.d.ts +1 -1
- package/dist/utc/index.js +2 -2
- package/dist/utc/interval/intervalAbutsUtc.js +1 -1
- package/dist/utc/interval/intervalContainsUtc.js +1 -1
- package/dist/utc/interval/intervalCountUtc.js +1 -1
- package/dist/utc/interval/intervalDivideEquallyUtc.js +1 -1
- package/dist/utc/interval/intervalEngulfsUtc.js +1 -1
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -1
- package/dist/utc/interval/intervalLengthUtc.js +1 -1
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +1 -1
- package/dist/utc/interval/intervalSplitAtUtc.js +1 -1
- package/dist/utc/interval/intervalXorAllUtc.js +1 -1
- package/dist/utc/interval/intervalXorUtc.js +1 -1
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +2 -1
- package/dist/utc/interval/splitIntervalByUnitUtc.js +3 -2
- package/dist/utc/interval/validate/isValidUtcInterval.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDateFromUtc.js +1 -1
- package/dist/utc/parse/parseDayFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDayFromUtc.js +1 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +2 -2
- package/dist/utc/parse/parseHourFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseHourFromUtc.js +1 -1
- package/dist/utc/parse/parseHttpDate.js +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -1
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +1 -1
- package/dist/utc/parse/parseMonthFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMonthFromUtc.js +1 -1
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseNanosecondFromUtc.js +1 -1
- package/dist/utc/parse/parseSecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseSecondFromUtc.js +1 -1
- package/dist/utc/parse/parseTimeFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseTimeFromUtc.js +2 -2
- package/dist/utc/parse/parseUnitFromUtc.d.ts +2 -2
- package/dist/utc/parse/parseUnitFromUtc.js +2 -2
- package/dist/utc/parse/parseWeekFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseWeekFromUtc.js +2 -2
- package/dist/utc/parse/parseYearFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseYearFromUtc.js +1 -1
- package/dist/utc/validate/isValidUtc.js +3 -3
- package/dist/utc/validate/isValidUtcRange.js +1 -1
- package/dist/{duty → workforce}/calculate/dutyDayFor.js +1 -1
- package/dist/{duty → workforce}/calculate/evaluateDutyLog.js +1 -1
- package/dist/{duty → workforce}/calculate/longestRun.js +1 -1
- package/dist/{duty → workforce}/calculate/qualifyingRestPairs.js +1 -1
- package/dist/{duty → workforce}/calculate/qualifyingRests.js +1 -1
- package/dist/workforce/index.d.ts +3 -0
- package/dist/workforce/index.js +4 -0
- package/dist/{duty → workforce}/validate/isValidDutyLog.d.ts +2 -2
- package/dist/{duty → workforce}/validate/isValidDutyLog.js +2 -2
- package/dist/zoned/calculate/addZoned.d.ts +15 -15
- package/dist/zoned/calculate/addZoned.js +15 -15
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -4
- package/dist/zoned/calculate/clampZoned.js +1 -1
- package/dist/zoned/calculate/diffZoned.d.ts +8 -8
- package/dist/zoned/calculate/diffZoned.js +7 -7
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +5 -5
- package/dist/zoned/calculate/diffZonedAsDuration.js +4 -4
- package/dist/zoned/calculate/endOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.js +2 -2
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +6 -5
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +6 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +5 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -5
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +6 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +6 -6
- package/dist/zoned/calculate/maxZoned.d.ts +2 -2
- package/dist/zoned/calculate/maxZoned.js +3 -3
- package/dist/zoned/calculate/minZoned.d.ts +2 -2
- package/dist/zoned/calculate/minZoned.js +3 -3
- package/dist/zoned/calculate/roundZoned.d.ts +11 -9
- package/dist/zoned/calculate/roundZoned.js +11 -9
- package/dist/zoned/calculate/setZoned.d.ts +8 -8
- package/dist/zoned/calculate/setZoned.js +8 -8
- package/dist/zoned/calculate/sortZoned.d.ts +3 -3
- package/dist/zoned/calculate/sortZoned.js +4 -4
- package/dist/zoned/calculate/startOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/startOfZoned.js +2 -2
- package/dist/zoned/calculate/subtractZoned.d.ts +14 -14
- package/dist/zoned/calculate/subtractZoned.js +14 -14
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -4
- package/dist/zoned/chop/chopZonedDate.d.ts +1 -1
- package/dist/zoned/chop/chopZonedDate.js +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.js +1 -1
- package/dist/zoned/chop/chopZonedSeconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedSeconds.js +1 -1
- package/dist/zoned/chop/chopZonedTime.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTime.js +1 -1
- package/dist/zoned/chop/chopZonedTimezone.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTimezone.js +1 -1
- package/dist/zoned/classify/classifyStoredZoned.d.ts +46 -0
- package/dist/zoned/classify/classifyStoredZoned.js +177 -0
- package/dist/zoned/classify/index.d.ts +1 -0
- package/dist/zoned/classify/index.js +1 -0
- package/dist/zoned/compare/areZonedEqual.js +1 -1
- package/dist/zoned/compare/areZonedEqualBy.d.ts +8 -10
- package/dist/zoned/compare/areZonedEqualBy.js +8 -10
- package/dist/zoned/compare/isAfterZoned.js +1 -1
- package/dist/zoned/compare/isBeforeZoned.d.ts +2 -2
- package/dist/zoned/compare/isBeforeZoned.js +3 -3
- package/dist/zoned/compare/isBetweenZoned.js +1 -1
- package/dist/zoned/compare/isInDaylightSaving.d.ts +2 -2
- package/dist/zoned/compare/isInDaylightSaving.js +2 -2
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -6
- package/dist/zoned/compare/isZonedBusinessDay.js +7 -6
- package/dist/zoned/compare/isZonedFuture.js +1 -1
- package/dist/zoned/compare/isZonedPast.js +1 -1
- package/dist/zoned/compare/isZonedRelativeDay.d.ts +2 -2
- package/dist/zoned/compare/isZonedRelativeDay.js +3 -3
- package/dist/zoned/compare/isZonedThisUnit.d.ts +7 -7
- package/dist/zoned/compare/isZonedThisUnit.js +7 -7
- package/dist/zoned/compare/isZonedWeekend.d.ts +5 -5
- package/dist/zoned/compare/isZonedWeekend.js +5 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +6 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -6
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +5 -5
- package/dist/zoned/convert/convertZonedToCalendar.js +5 -5
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +3 -3
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +3 -3
- package/dist/zoned/convert/convertZonedToZoned.d.ts +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
- package/dist/zoned/format/formatCalendarZoned.js +5 -5
- package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
- package/dist/zoned/format/formatRelativeZoned.js +4 -4
- package/dist/zoned/format/formatRfc2822.d.ts +3 -3
- package/dist/zoned/format/formatRfc2822.js +3 -3
- package/dist/zoned/format/formatRfc3339.d.ts +2 -2
- package/dist/zoned/format/formatRfc3339.js +2 -2
- package/dist/zoned/format/formatTimeZoneName.d.ts +17 -17
- package/dist/zoned/format/formatTimeZoneName.js +13 -12
- package/dist/zoned/format/formatZonedDateTime.d.ts +10 -10
- package/dist/zoned/format/formatZonedDateTime.js +12 -11
- package/dist/zoned/format/formatZonedRange.d.ts +7 -7
- package/dist/zoned/format/formatZonedRange.js +9 -8
- package/dist/zoned/format/formatZonedToParts.d.ts +11 -11
- package/dist/zoned/format/formatZonedToParts.js +13 -12
- package/dist/zoned/get/getDstTransitions.d.ts +9 -9
- package/dist/zoned/get/getDstTransitions.js +3 -3
- package/dist/zoned/get/getSystemTimeZone.d.ts +2 -2
- package/dist/zoned/get/getSystemTimeZone.js +2 -2
- package/dist/zoned/get/getTimeZoneOffset.d.ts +5 -5
- package/dist/zoned/get/getTimeZoneOffset.js +5 -5
- package/dist/zoned/get/getTimeZones.d.ts +1 -1
- package/dist/zoned/get/getTimeZones.js +1 -1
- package/dist/zoned/get/getZonedDay.d.ts +1 -1
- package/dist/zoned/get/getZonedDay.js +1 -1
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +1 -1
- package/dist/zoned/get/getZonedDayOfWeek.js +1 -1
- package/dist/zoned/get/getZonedHour.d.ts +1 -1
- package/dist/zoned/get/getZonedHour.js +1 -1
- package/dist/zoned/get/getZonedMicrosecond.d.ts +1 -1
- package/dist/zoned/get/getZonedMicrosecond.js +1 -1
- package/dist/zoned/get/getZonedMillisecond.d.ts +1 -1
- package/dist/zoned/get/getZonedMillisecond.js +1 -1
- package/dist/zoned/get/getZonedMinute.d.ts +1 -1
- package/dist/zoned/get/getZonedMinute.js +1 -1
- package/dist/zoned/get/getZonedMonth.d.ts +1 -1
- package/dist/zoned/get/getZonedMonth.js +1 -1
- package/dist/zoned/get/getZonedNanosecond.d.ts +1 -1
- package/dist/zoned/get/getZonedNanosecond.js +1 -1
- package/dist/zoned/get/getZonedNow.d.ts +4 -4
- package/dist/zoned/get/getZonedNow.js +4 -4
- package/dist/zoned/get/getZonedNowUnit.d.ts +2 -2
- package/dist/zoned/get/getZonedNowUnit.js +1 -1
- package/dist/zoned/get/getZonedSecond.d.ts +1 -1
- package/dist/zoned/get/getZonedSecond.js +1 -1
- package/dist/zoned/get/getZonedToday.d.ts +1 -1
- package/dist/zoned/get/getZonedToday.js +1 -1
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +1 -1
- package/dist/zoned/get/getZonedWeekOfYear.js +1 -1
- package/dist/zoned/get/getZonedYear.d.ts +1 -1
- package/dist/zoned/get/getZonedYear.js +1 -1
- package/dist/zoned/index.d.ts +2 -1
- package/dist/zoned/index.js +3 -2
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalAbutsZoned.js +3 -3
- package/dist/zoned/interval/intervalContainsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalContainsZoned.js +2 -2
- package/dist/zoned/interval/intervalCountZoned.d.ts +4 -4
- package/dist/zoned/interval/intervalCountZoned.js +5 -5
- package/dist/zoned/interval/intervalDifferenceZoned.js +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +2 -2
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalEngulfsZoned.js +2 -2
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +6 -6
- package/dist/zoned/interval/intervalFromDurationZoned.js +7 -7
- package/dist/zoned/interval/intervalIntersectionZoned.js +1 -1
- package/dist/zoned/interval/intervalLengthZoned.d.ts +5 -5
- package/dist/zoned/interval/intervalLengthZoned.js +5 -5
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +3 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +14 -16
- package/dist/zoned/interval/intervalUnionZoned.js +1 -1
- package/dist/zoned/interval/intervalXorAllZoned.js +1 -1
- package/dist/zoned/interval/intervalXorZoned.js +1 -1
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalsOverlapZoned.js +3 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +1 -1
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +2 -1
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +3 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +2 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +3 -3
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +1 -1
- package/dist/zoned/interval/validate/isValidZonedInterval.js +2 -2
- package/dist/zoned/map/mapZonedDatesInRange.js +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.js +2 -2
- package/dist/zoned/parse/getZonedOffset.d.ts +1 -1
- package/dist/zoned/parse/getZonedOffset.js +1 -1
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +6 -6
- package/dist/zoned/parse/getZonedOffsetAs.js +3 -3
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseRfc3339.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +1 -1
- package/dist/zoned/validate/hasDaylightSaving.d.ts +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
- package/dist/zoned/validate/isValidTimeZone.d.ts +1 -1
- package/dist/zoned/validate/isValidTimeZone.js +3 -18
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +7 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +9 -9
- package/dist/zoned/validate/isValidZonedRange.d.ts +1 -1
- package/dist/zoned/validate/isValidZonedRange.js +5 -5
- package/package.json +71 -21
- package/skills/gmt-arithmetic/SKILL.md +18 -59
- package/skills/gmt-basics/SKILL.md +32 -12
- package/skills/gmt-gnss/SKILL.md +92 -0
- package/skills/gmt-integration/SKILL.md +48 -15
- package/skills/gmt-intermodal/SKILL.md +189 -0
- package/skills/gmt-timezone/SKILL.md +34 -257
- package/skills/gmt-transport/SKILL.md +133 -0
- package/skills/gmt-workforce/SKILL.md +84 -0
- package/dist/duty/index.d.ts +0 -3
- package/dist/duty/index.js +0 -4
- /package/dist/{duty → workforce}/calculate/dutyDayFor.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyTotals.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyTotals.js +0 -0
- /package/dist/{duty → workforce}/calculate/dutyViolations.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyViolations.js +0 -0
- /package/dist/{duty → workforce}/calculate/evaluateDutyLog.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/index.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/index.js +0 -0
- /package/dist/{duty → workforce}/calculate/longestRun.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/qualifyingRestPairs.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/qualifyingRests.d.ts +0 -0
- /package/dist/{duty → workforce}/validate/index.d.ts +0 -0
- /package/dist/{duty → workforce}/validate/index.js +0 -0
package/README.md
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
**The most tested date and time library for JavaScript.** `@northguild/gmt` is one library in place of Luxon, date-fns, Moment.js, Day.js, Spacetime and `@internationalized/date`. It is built on the TC39 Temporal standard and never touches `Date`.
|
|
4
4
|
|
|
5
|
-
[Docs](https://
|
|
5
|
+
[Docs](https://northguild.dev/gmt/) · [API reference](https://northguild.dev/gmt/reference/) · [Tools](https://northguild.dev/gmt/tools/) · [Discord](https://discord.gg/TdvQdP3t5a)
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
7
|
+
- **62,377 tests, run 1,871,310 times in CI.** Every test runs in 10 time zones on 3 Node versions.
|
|
8
|
+
- **56× the CI test runs** of the six libraries below, combined.
|
|
9
|
+
- **660 functions, to the nanosecond**, tested in 17 locales.
|
|
10
10
|
- **Never throws.** ISO 8601 strings in. Invalid input returns `""`, `null`, `false` or `[]`.
|
|
11
11
|
|
|
12
12
|
| Library | Tests | CI test runs | Built on |
|
|
13
13
|
| ------------------------- | ---------- | ------------- | --------- |
|
|
14
|
-
| **`@northguild/gmt`** | **
|
|
14
|
+
| **`@northguild/gmt`** | **62,377** | **1,871,310** | Temporal |
|
|
15
15
|
| Spacetime | 6,086 | 12,172 | `Date` |
|
|
16
16
|
| Moment.js | 3,901 | 11,703 | `Date` |
|
|
17
17
|
| date-fns | 3,213 | 3,213 | `Date` |
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
| Day.js | 794 | 1,034 | `Date` |
|
|
20
20
|
| `@internationalized/date` | 386 | 386 | own types |
|
|
21
21
|
|
|
22
|
-
The other libraries were measured from 2026-08-22 to 2026-09-09, each by running its own test suite. [The full comparison and the method](https://
|
|
22
|
+
The other libraries were measured from 2026-08-22 to 2026-09-09, each by running its own test suite. [The full comparison and the method](https://northguild.dev/gmt/compare/).
|
|
23
23
|
|
|
24
24
|
## Install
|
|
25
25
|
|
|
@@ -42,16 +42,16 @@ addBusinessDays("2024-03-15", 1); // "2024-03-18"
|
|
|
42
42
|
|
|
43
43
|
// Time zones, and the night the clocks change
|
|
44
44
|
convertUtcToZoned("2024-06-15T12:00:00Z", "Asia/Tokyo"); // "2024-06-15T21:00:00+09:00[Asia/Tokyo]"
|
|
45
|
-
addZoned("2024-
|
|
46
|
-
resolveLocal("2024-
|
|
45
|
+
addZoned("2024-10-06T01:30:00+10:00[Australia/Sydney]", { hours: 1 }); // "2024-10-06T03:30:00+11:00[Australia/Sydney]"
|
|
46
|
+
resolveLocal("2024-10-06T02:30:00", "Australia/Sydney", { disambiguation: "reject" }); // "" (02:30 did not happen that day)
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
Every function has a reference page with a live playground:
|
|
50
|
-
[plain](https://
|
|
50
|
+
[plain](https://northguild.dev/gmt/reference/plain/) · [zoned](https://northguild.dev/gmt/reference/zoned/) · [utc](https://northguild.dev/gmt/reference/utc/) · [unix](https://northguild.dev/gmt/reference/unix/) · [instant](https://northguild.dev/gmt/reference/instant/) · [calendar](https://northguild.dev/gmt/reference/calendar/) · [duration](https://northguild.dev/gmt/reference/duration/) · [interval](https://northguild.dev/gmt/reference/interval/) · [workforce](https://northguild.dev/gmt/reference/workforce/) · [span](https://northguild.dev/gmt/reference/span/) · [precision](https://northguild.dev/gmt/reference/precision/) · [timescale](https://northguild.dev/gmt/reference/timescale/) · [gnss](https://northguild.dev/gmt/reference/gnss/) · [transport](https://northguild.dev/gmt/reference/transport/) · [intermodal](https://northguild.dev/gmt/reference/intermodal/)
|
|
51
51
|
|
|
52
|
-
By industry: [
|
|
52
|
+
By industry: [Workforce](https://northguild.dev/gmt/industries/workforce/) · [Transport](https://northguild.dev/gmt/industries/transport/) · [Intermodal](https://northguild.dev/gmt/industries/intermodal/) · [GNSS](https://northguild.dev/gmt/industries/gnss/) · [Maritime](https://northguild.dev/gmt/industries/maritime/)
|
|
53
53
|
|
|
54
|
-
Then the [guides](https://
|
|
54
|
+
Then the [guides](https://northguild.dev/gmt/guides/) show how to do each job, and the [tools](https://northguild.dev/gmt/tools/) let you try it on your own values.
|
|
55
55
|
|
|
56
56
|
## Agent prompt
|
|
57
57
|
|
|
@@ -79,7 +79,7 @@ WHEN HELPING THE USER:
|
|
|
79
79
|
them to the right task area (basics, arithmetic, timezone, integration).
|
|
80
80
|
|
|
81
81
|
2. Generate code using GMT's string-in/string-out API. NEVER use new Date().
|
|
82
|
-
For API details, read https://
|
|
82
|
+
For API details, read https://northguild.dev/gmt/llms.txt and the
|
|
83
83
|
JSDoc in the installed package.
|
|
84
84
|
|
|
85
85
|
3. For specialized tasks, use TanStack Intent to discover and load the relevant skill:
|
|
@@ -24,11 +24,11 @@ import type { BusinessCalendar } from "../../types/index.js";
|
|
|
24
24
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
25
25
|
* @returns number of working days in `(start, end]`, negative when `end` precedes `start`, or null on invalid input
|
|
26
26
|
*
|
|
27
|
-
* @example businessDaysBetween("2024-07-01", "2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
27
|
+
* @example businessDaysBetween("2024-07-01", "2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // 3 — Tue, Wed, Fri
|
|
28
28
|
* @example businessDaysBetween("2024-07-05", "2024-07-08", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 1 — Monday, over the weekend
|
|
29
29
|
* @example businessDaysBetween("2024-07-01", "2024-07-31", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 22 — July's 23 weekdays less the 1st
|
|
30
30
|
* @example businessDaysBetween("2024-07-01", "2024-07-01", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 0
|
|
31
|
-
* @example businessDaysBetween("2024-07-05", "2024-07-01", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
31
|
+
* @example businessDaysBetween("2024-07-05", "2024-07-01", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // -3 — reversed
|
|
32
32
|
* @example businessDaysBetween("2024-07-06", "2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 0 — addBusinessDays("2024-07-06", -1) is "2024-07-05", but Saturday is excluded
|
|
33
33
|
* @example businessDaysBetween("2024-07-01", "2024-07-08", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // 5 — Friday–Saturday weekend
|
|
34
34
|
* @example businessDaysBetween("invalid", "2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // null
|
|
@@ -1,33 +1,7 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import { parseBusinessCalendar } from "../../internal/businessCalendar.js";
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
|
+
import { businessDaysWithin, parseBusinessCalendar, } from "../../internal/businessCalendar.js";
|
|
3
|
+
import { epochDayOfDate } from "../../internal/epochDay.js";
|
|
3
4
|
import { isValidDate } from "../../plain/validate/index.js";
|
|
4
|
-
const DAYS_PER_WEEK = 7;
|
|
5
|
-
/**
|
|
6
|
-
* Count the business days in `(from, to]`, given `from` is not after `to`.
|
|
7
|
-
*
|
|
8
|
-
* Whole weeks contribute one of each weekday, so only the remainder is walked and the count
|
|
9
|
-
* costs the same for a range of days as for one of centuries.
|
|
10
|
-
*/
|
|
11
|
-
function countBusinessDates(from, to, weekend, holidays) {
|
|
12
|
-
const days = from.until(to, { largestUnit: "day" }).days;
|
|
13
|
-
const wholeWeeks = Math.floor(days / DAYS_PER_WEEK);
|
|
14
|
-
const businessDaysPerWeek = DAYS_PER_WEEK - weekend.size;
|
|
15
|
-
let count = wholeWeeks * businessDaysPerWeek;
|
|
16
|
-
for (let offset = wholeWeeks * DAYS_PER_WEEK + 1; offset <= days; offset++) {
|
|
17
|
-
if (!weekend.has(from.add({ days: offset }).dayOfWeek)) {
|
|
18
|
-
count += 1;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
for (const holiday of holidays) {
|
|
22
|
-
const date = Temporal.PlainDate.from(holiday);
|
|
23
|
-
const insideRange = Temporal.PlainDate.compare(date, from) > 0 &&
|
|
24
|
-
Temporal.PlainDate.compare(date, to) <= 0;
|
|
25
|
-
if (insideRange && !weekend.has(date.dayOfWeek)) {
|
|
26
|
-
count -= 1;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return count;
|
|
30
|
-
}
|
|
31
5
|
/**
|
|
32
6
|
* Count the working days between two local dates, **excluding `start` and including `end`**.
|
|
33
7
|
*
|
|
@@ -53,11 +27,11 @@ function countBusinessDates(from, to, weekend, holidays) {
|
|
|
53
27
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
54
28
|
* @returns number of working days in `(start, end]`, negative when `end` precedes `start`, or null on invalid input
|
|
55
29
|
*
|
|
56
|
-
* @example businessDaysBetween("2024-07-01", "2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
30
|
+
* @example businessDaysBetween("2024-07-01", "2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // 3 — Tue, Wed, Fri
|
|
57
31
|
* @example businessDaysBetween("2024-07-05", "2024-07-08", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 1 — Monday, over the weekend
|
|
58
32
|
* @example businessDaysBetween("2024-07-01", "2024-07-31", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 22 — July's 23 weekdays less the 1st
|
|
59
33
|
* @example businessDaysBetween("2024-07-01", "2024-07-01", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 0
|
|
60
|
-
* @example businessDaysBetween("2024-07-05", "2024-07-01", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
34
|
+
* @example businessDaysBetween("2024-07-05", "2024-07-01", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // -3 — reversed
|
|
61
35
|
* @example businessDaysBetween("2024-07-06", "2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // 0 — addBusinessDays("2024-07-06", -1) is "2024-07-05", but Saturday is excluded
|
|
62
36
|
* @example businessDaysBetween("2024-07-01", "2024-07-08", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // 5 — Friday–Saturday weekend
|
|
63
37
|
* @example businessDaysBetween("invalid", "2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // null
|
|
@@ -70,10 +44,12 @@ export function businessDaysBetween(start, end, calendar) {
|
|
|
70
44
|
return null;
|
|
71
45
|
}
|
|
72
46
|
try {
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
const reversed =
|
|
76
|
-
const count =
|
|
47
|
+
const startDay = epochDayOfDate(Temporal.PlainDate.from(start));
|
|
48
|
+
const endDay = epochDayOfDate(Temporal.PlainDate.from(end));
|
|
49
|
+
const reversed = startDay > endDay;
|
|
50
|
+
const count = reversed
|
|
51
|
+
? businessDaysWithin(endDay + 1, startDay, resolved)
|
|
52
|
+
: businessDaysWithin(startDay + 1, endDay, resolved);
|
|
77
53
|
// `0 - count` rather than `-count`: an empty reversed range must be 0, not -0.
|
|
78
54
|
return reversed ? 0 - count : count;
|
|
79
55
|
}
|
|
@@ -23,7 +23,7 @@ import type { BusinessCalendar } from "../../types/index.js";
|
|
|
23
23
|
* @param calendars array of BusinessCalendar records to compose
|
|
24
24
|
* @returns merged BusinessCalendar, or null on invalid input
|
|
25
25
|
*
|
|
26
|
-
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
26
|
+
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }, { weekend: [6, 7], holidays: ["2024-05-06"], timeZone: "Europe/London" }]) // { weekend: [6, 7], holidays: ["2024-05-06", "2024-07-04"], timeZone: "Africa/Kigali" }
|
|
27
27
|
* @example mergeCalendars([{ weekend: [6, 7], holidays: [], timeZone: "UTC" }, { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }]) // { weekend: [5, 6, 7], holidays: [], timeZone: "UTC" } — only Sunday to Thursday survive
|
|
28
28
|
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "UTC" }]) // { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "UTC" }
|
|
29
29
|
* @example mergeCalendars([]) // null
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
2
1
|
import { parseBusinessCalendar } from "../../internal/businessCalendar.js";
|
|
2
|
+
import { isoDateString, sortedUnique } from "../../internal/epochDay.js";
|
|
3
3
|
/**
|
|
4
4
|
* Compose several jurisdictions' calendars into one whose working days are those they all
|
|
5
5
|
* share.
|
|
@@ -24,7 +24,7 @@ import { parseBusinessCalendar } from "../../internal/businessCalendar.js";
|
|
|
24
24
|
* @param calendars array of BusinessCalendar records to compose
|
|
25
25
|
* @returns merged BusinessCalendar, or null on invalid input
|
|
26
26
|
*
|
|
27
|
-
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
27
|
+
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }, { weekend: [6, 7], holidays: ["2024-05-06"], timeZone: "Europe/London" }]) // { weekend: [6, 7], holidays: ["2024-05-06", "2024-07-04"], timeZone: "Africa/Kigali" }
|
|
28
28
|
* @example mergeCalendars([{ weekend: [6, 7], holidays: [], timeZone: "UTC" }, { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }]) // { weekend: [5, 6, 7], holidays: [], timeZone: "UTC" } — only Sunday to Thursday survive
|
|
29
29
|
* @example mergeCalendars([{ weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "UTC" }]) // { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "UTC" }
|
|
30
30
|
* @example mergeCalendars([]) // null
|
|
@@ -37,7 +37,7 @@ export function mergeCalendars(calendars) {
|
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
39
|
const weekend = new Set();
|
|
40
|
-
const
|
|
40
|
+
const holidayLists = [];
|
|
41
41
|
for (const calendar of calendars) {
|
|
42
42
|
const resolved = parseBusinessCalendar(calendar);
|
|
43
43
|
if (resolved === null) {
|
|
@@ -46,15 +46,14 @@ export function mergeCalendars(calendars) {
|
|
|
46
46
|
for (const day of resolved.weekend) {
|
|
47
47
|
weekend.add(day);
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
holidays.add(holiday);
|
|
51
|
-
}
|
|
49
|
+
holidayLists.push(resolved.holidays);
|
|
52
50
|
}
|
|
51
|
+
const holidays = sortedUnique(Int32Array.from(holidayLists.flatMap((list) => Array.from(list))));
|
|
53
52
|
const merged = {
|
|
54
53
|
weekend: [...weekend].sort((a, b) => a - b),
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
holidays:
|
|
54
|
+
// Epoch days sort chronologically, which a string sort would not: it puts the "+" and "-"
|
|
55
|
+
// of an expanded year below every digit.
|
|
56
|
+
holidays: Array.from(holidays, (day) => isoDateString(day)),
|
|
58
57
|
timeZone: calendars[0].timeZone,
|
|
59
58
|
};
|
|
60
59
|
// The union can close every weekday even when no input does, which is not a calendar.
|
|
@@ -20,8 +20,8 @@ import type { BusinessCalendar } from "../../types/index.js";
|
|
|
20
20
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
21
21
|
* @returns ISO PlainDate string of the next working day, or "" on invalid input
|
|
22
22
|
*
|
|
23
|
-
* @example nextBusinessDay("2024-07-03", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
24
|
-
* @example nextBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
23
|
+
* @example nextBusinessDay("2024-07-03", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-05" — skips the holiday
|
|
24
|
+
* @example nextBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-05" — from the holiday itself
|
|
25
25
|
* @example nextBusinessDay("2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-07-08" — Friday over the weekend
|
|
26
26
|
* @example nextBusinessDay("2024-07-04", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // "2024-07-07" — Friday–Saturday weekend
|
|
27
27
|
* @example nextBusinessDay("invalid", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // ""
|
|
@@ -20,8 +20,8 @@ import { neighbourBusinessDayValue } from "../../internal/businessDayValues.js";
|
|
|
20
20
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
21
21
|
* @returns ISO PlainDate string of the next working day, or "" on invalid input
|
|
22
22
|
*
|
|
23
|
-
* @example nextBusinessDay("2024-07-03", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
24
|
-
* @example nextBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
23
|
+
* @example nextBusinessDay("2024-07-03", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-05" — skips the holiday
|
|
24
|
+
* @example nextBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-05" — from the holiday itself
|
|
25
25
|
* @example nextBusinessDay("2024-07-05", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-07-08" — Friday over the weekend
|
|
26
26
|
* @example nextBusinessDay("2024-07-04", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // "2024-07-07" — Friday–Saturday weekend
|
|
27
27
|
* @example nextBusinessDay("invalid", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // ""
|
|
@@ -20,8 +20,8 @@ import type { BusinessCalendar } from "../../types/index.js";
|
|
|
20
20
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
21
21
|
* @returns ISO PlainDate string of the previous working day, or "" on invalid input
|
|
22
22
|
*
|
|
23
|
-
* @example previousBusinessDay("2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
24
|
-
* @example previousBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
23
|
+
* @example previousBusinessDay("2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-03" — skips the holiday
|
|
24
|
+
* @example previousBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-03" — from the holiday itself
|
|
25
25
|
* @example previousBusinessDay("2024-07-08", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-07-05" — Monday back over the weekend
|
|
26
26
|
* @example previousBusinessDay("2024-07-07", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // "2024-07-04" — Friday–Saturday weekend
|
|
27
27
|
* @example previousBusinessDay("invalid", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // ""
|
|
@@ -20,8 +20,8 @@ import { neighbourBusinessDayValue } from "../../internal/businessDayValues.js";
|
|
|
20
20
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
21
21
|
* @returns ISO PlainDate string of the previous working day, or "" on invalid input
|
|
22
22
|
*
|
|
23
|
-
* @example previousBusinessDay("2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
24
|
-
* @example previousBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "
|
|
23
|
+
* @example previousBusinessDay("2024-07-05", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-03" — skips the holiday
|
|
24
|
+
* @example previousBusinessDay("2024-07-04", { weekend: [6, 7], holidays: ["2024-07-04"], timeZone: "Africa/Kigali" }) // "2024-07-03" — from the holiday itself
|
|
25
25
|
* @example previousBusinessDay("2024-07-08", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-07-05" — Monday back over the weekend
|
|
26
26
|
* @example previousBusinessDay("2024-07-07", { weekend: [5, 6], holidays: [], timeZone: "Asia/Riyadh" }) // "2024-07-04" — Friday–Saturday weekend
|
|
27
27
|
* @example previousBusinessDay("invalid", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // ""
|
|
@@ -46,9 +46,9 @@ import type { BusinessCalendar, RollConvention } from "../../types/index.js";
|
|
|
46
46
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
47
47
|
* @returns ISO PlainDate string of the rolled date, or "" on invalid input
|
|
48
48
|
*
|
|
49
|
-
* @example rollDate("2024-05-31", "following", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
50
|
-
* @example rollDate("2024-05-31", "modifiedFollowing", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
51
|
-
* @example rollDate("2024-06-01", "modifiedPreceding", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
49
|
+
* @example rollDate("2024-05-31", "following", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-06-03"
|
|
50
|
+
* @example rollDate("2024-05-31", "modifiedFollowing", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-05-30" — forward would leave May
|
|
51
|
+
* @example rollDate("2024-06-01", "modifiedPreceding", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-06-03" — backward would leave June
|
|
52
52
|
* @example rollDate("2024-05-29", "following", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-05-29" — already a working day
|
|
53
53
|
* @example rollDate("2024-03-15", "endOfMonth", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-03-29" — March ends on a Sunday
|
|
54
54
|
* @example rollDate("2024-06-01", "none", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-06-01" — a Saturday, unadjusted
|
|
@@ -1,40 +1,7 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
function sameMonth(a, b) {
|
|
6
|
-
return a.year === b.year && a.month === b.month;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Roll in `direction`, and if that leaves the date's month, roll the other way instead.
|
|
10
|
-
*/
|
|
11
|
-
function modifiedRoll(date, direction, calendar) {
|
|
12
|
-
const rolled = businessDateFrom(date, direction, calendar);
|
|
13
|
-
// An exhausted walk is a sentinel, not a "left the month" answer: turning round here would
|
|
14
|
-
// report the opposite direction's date as though the first walk had succeeded.
|
|
15
|
-
if (rolled === null) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
return sameMonth(rolled, date)
|
|
19
|
-
? rolled
|
|
20
|
-
: businessDateFrom(date, direction === 1 ? -1 : 1, calendar);
|
|
21
|
-
}
|
|
22
|
-
function rollTo(date, convention, calendar) {
|
|
23
|
-
switch (convention) {
|
|
24
|
-
case "following":
|
|
25
|
-
return businessDateFrom(date, 1, calendar);
|
|
26
|
-
case "preceding":
|
|
27
|
-
return businessDateFrom(date, -1, calendar);
|
|
28
|
-
case "modifiedFollowing":
|
|
29
|
-
return modifiedRoll(date, 1, calendar);
|
|
30
|
-
case "modifiedPreceding":
|
|
31
|
-
return modifiedRoll(date, -1, calendar);
|
|
32
|
-
case "endOfMonth":
|
|
33
|
-
return businessDateFrom(date.with({ day: date.daysInMonth }), -1, calendar);
|
|
34
|
-
case "none":
|
|
35
|
-
return date;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
|
+
import { parseBusinessCalendar } from "../../internal/businessCalendar.js";
|
|
3
|
+
import { rollBusinessDate } from "../../internal/rollBusinessDate.js";
|
|
4
|
+
import { isDateString, isRollConventionName } from "../../internal/inputChecks.js";
|
|
38
5
|
/**
|
|
39
6
|
* Move a local date onto a working day according to `convention`.
|
|
40
7
|
*
|
|
@@ -82,9 +49,9 @@ function rollTo(date, convention, calendar) {
|
|
|
82
49
|
* @param calendar BusinessCalendar naming the weekend days and holidays
|
|
83
50
|
* @returns ISO PlainDate string of the rolled date, or "" on invalid input
|
|
84
51
|
*
|
|
85
|
-
* @example rollDate("2024-05-31", "following", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
86
|
-
* @example rollDate("2024-05-31", "modifiedFollowing", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
87
|
-
* @example rollDate("2024-06-01", "modifiedPreceding", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "
|
|
52
|
+
* @example rollDate("2024-05-31", "following", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-06-03"
|
|
53
|
+
* @example rollDate("2024-05-31", "modifiedFollowing", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-05-30" — forward would leave May
|
|
54
|
+
* @example rollDate("2024-06-01", "modifiedPreceding", { weekend: [6, 7], holidays: ["2024-05-31"], timeZone: "Europe/London" }) // "2024-06-03" — backward would leave June
|
|
88
55
|
* @example rollDate("2024-05-29", "following", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-05-29" — already a working day
|
|
89
56
|
* @example rollDate("2024-03-15", "endOfMonth", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-03-29" — March ends on a Sunday
|
|
90
57
|
* @example rollDate("2024-06-01", "none", { weekend: [6, 7], holidays: [], timeZone: "UTC" }) // "2024-06-01" — a Saturday, unadjusted
|
|
@@ -95,13 +62,13 @@ function rollTo(date, convention, calendar) {
|
|
|
95
62
|
export function rollDate(value, convention, calendar) {
|
|
96
63
|
try {
|
|
97
64
|
const resolved = parseBusinessCalendar(calendar);
|
|
98
|
-
if (!
|
|
99
|
-
!
|
|
65
|
+
if (!isDateString(value) ||
|
|
66
|
+
!isRollConventionName(convention) ||
|
|
100
67
|
resolved === null) {
|
|
101
68
|
return "";
|
|
102
69
|
}
|
|
103
70
|
try {
|
|
104
|
-
const rolled =
|
|
71
|
+
const rolled = rollBusinessDate(Temporal.PlainDate.from(value), convention, resolved);
|
|
105
72
|
return rolled === null ? "" : rolled.toString();
|
|
106
73
|
}
|
|
107
74
|
catch {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
2
|
import type { ZoneBucketUnit } from "../../types/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Return the start instant of every `unit` bucket the half-open range `[start, end)` touches,
|
|
5
5
|
* bucketed **in `timeZone`**.
|
|
6
6
|
*
|
|
7
|
-
* This is "group by day in `
|
|
7
|
+
* This is "group by day in `Europe/London`" over UTC timestamps, done correctly. Buckets
|
|
8
8
|
* are not uniform in length and that is the point: a day that springs forward is 23 hours and
|
|
9
9
|
* one that falls back is 25, so a daily aggregate built on a fixed 24 hours drifts an hour
|
|
10
10
|
* twice a year, and a container's chargeable days — counted in terminal-local calendar days —
|
|
@@ -43,14 +43,14 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
43
43
|
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
44
44
|
* @returns array of UTC instant strings ending in "Z", or [] on invalid input
|
|
45
45
|
*
|
|
46
|
-
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "
|
|
47
|
-
* @example bucketRange("2024-03-
|
|
48
|
-
* @example bucketRange("2024-
|
|
49
|
-
* @example bucketRange("2024-
|
|
50
|
-
* @example bucketRange("2024-06-
|
|
51
|
-
* @example bucketRange("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "day", "America/
|
|
46
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "Asia/Kolkata") // ["2024-06-14T18:30:00Z", "2024-06-15T18:30:00Z", "2024-06-16T18:30:00Z"]
|
|
47
|
+
* @example bucketRange("2024-03-30T00:00:00Z", "2024-04-01T23:00:00Z", "day", "Europe/London") // ["2024-03-30T00:00:00Z", "2024-03-31T00:00:00Z", "2024-03-31T23:00:00Z"] (the middle day is 23 hours)
|
|
48
|
+
* @example bucketRange("2024-04-05T13:00:00Z", "2024-04-08T14:00:00Z", "day", "Australia/Sydney") // ["2024-04-05T13:00:00Z", "2024-04-06T13:00:00Z", "2024-04-07T14:00:00Z"] (the middle day is 25 hours)
|
|
49
|
+
* @example bucketRange("2024-04-06T14:00:00Z", "2024-04-06T18:00:00Z", "hour", "Australia/Sydney") // ["2024-04-06T14:00:00Z", "2024-04-06T15:00:00Z", "2024-04-06T16:00:00Z", "2024-04-06T17:00:00Z"] (the repeated 02:00 is its own bucket)
|
|
50
|
+
* @example bucketRange("2024-06-14T15:00:00Z", "2024-06-14T15:00:00Z", "day", "Asia/Tokyo") // [] (zero length, on a boundary)
|
|
51
|
+
* @example bucketRange("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "day", "America/Sao_Paulo") // ["+275760-09-12T03:00:00Z"] (the next day would start past the last instant; this one is still returned)
|
|
52
52
|
* @example bucketRange("2024-06-16T00:00:00Z", "2024-06-15T00:00:00Z", "day", "UTC") // [] (start after end)
|
|
53
|
-
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "
|
|
53
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "Asia/Tokyo") // ["2024-06-14T15:00:00Z", "2024-06-15T15:00:00Z", "2024-06-16T15:00:00Z"] (plural unit name)
|
|
54
54
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "year", "UTC") // [] (not a bucketing unit)
|
|
55
55
|
* @example bucketRange("1970-01-01T00:00:00Z", "1970-01-02T01:00:00Z", "day", "-00:44:30") // ["1969-12-31T00:44:30Z", "1970-01-01T00:44:30Z", "1970-01-02T00:44:30Z"]
|
|
56
56
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
2
|
import { frameInstant, frameZoned, instantFrom, nextZonedBucketStart, zonedUnitStart, zoneFrame, } from "../../internal/index.js";
|
|
3
3
|
import { isValidInstant } from "../../precision/validate/index.js";
|
|
4
4
|
import { isValidZoneBucketUnit } from "../validate/index.js";
|
|
@@ -30,7 +30,7 @@ function nextBucketStartWithinRange(current, unit) {
|
|
|
30
30
|
* Return the start instant of every `unit` bucket the half-open range `[start, end)` touches,
|
|
31
31
|
* bucketed **in `timeZone`**.
|
|
32
32
|
*
|
|
33
|
-
* This is "group by day in `
|
|
33
|
+
* This is "group by day in `Europe/London`" over UTC timestamps, done correctly. Buckets
|
|
34
34
|
* are not uniform in length and that is the point: a day that springs forward is 23 hours and
|
|
35
35
|
* one that falls back is 25, so a daily aggregate built on a fixed 24 hours drifts an hour
|
|
36
36
|
* twice a year, and a container's chargeable days — counted in terminal-local calendar days —
|
|
@@ -69,14 +69,14 @@ function nextBucketStartWithinRange(current, unit) {
|
|
|
69
69
|
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
70
70
|
* @returns array of UTC instant strings ending in "Z", or [] on invalid input
|
|
71
71
|
*
|
|
72
|
-
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "
|
|
73
|
-
* @example bucketRange("2024-03-
|
|
74
|
-
* @example bucketRange("2024-
|
|
75
|
-
* @example bucketRange("2024-
|
|
76
|
-
* @example bucketRange("2024-06-
|
|
77
|
-
* @example bucketRange("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "day", "America/
|
|
72
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "Asia/Kolkata") // ["2024-06-14T18:30:00Z", "2024-06-15T18:30:00Z", "2024-06-16T18:30:00Z"]
|
|
73
|
+
* @example bucketRange("2024-03-30T00:00:00Z", "2024-04-01T23:00:00Z", "day", "Europe/London") // ["2024-03-30T00:00:00Z", "2024-03-31T00:00:00Z", "2024-03-31T23:00:00Z"] (the middle day is 23 hours)
|
|
74
|
+
* @example bucketRange("2024-04-05T13:00:00Z", "2024-04-08T14:00:00Z", "day", "Australia/Sydney") // ["2024-04-05T13:00:00Z", "2024-04-06T13:00:00Z", "2024-04-07T14:00:00Z"] (the middle day is 25 hours)
|
|
75
|
+
* @example bucketRange("2024-04-06T14:00:00Z", "2024-04-06T18:00:00Z", "hour", "Australia/Sydney") // ["2024-04-06T14:00:00Z", "2024-04-06T15:00:00Z", "2024-04-06T16:00:00Z", "2024-04-06T17:00:00Z"] (the repeated 02:00 is its own bucket)
|
|
76
|
+
* @example bucketRange("2024-06-14T15:00:00Z", "2024-06-14T15:00:00Z", "day", "Asia/Tokyo") // [] (zero length, on a boundary)
|
|
77
|
+
* @example bucketRange("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "day", "America/Sao_Paulo") // ["+275760-09-12T03:00:00Z"] (the next day would start past the last instant; this one is still returned)
|
|
78
78
|
* @example bucketRange("2024-06-16T00:00:00Z", "2024-06-15T00:00:00Z", "day", "UTC") // [] (start after end)
|
|
79
|
-
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "
|
|
79
|
+
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "Asia/Tokyo") // ["2024-06-14T15:00:00Z", "2024-06-15T15:00:00Z", "2024-06-16T15:00:00Z"] (plural unit name)
|
|
80
80
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "year", "UTC") // [] (not a bucketing unit)
|
|
81
81
|
* @example bucketRange("1970-01-01T00:00:00Z", "1970-01-02T01:00:00Z", "day", "-00:44:30") // ["1969-12-31T00:44:30Z", "1970-01-01T00:44:30Z", "1970-01-02T00:44:30Z"]
|
|
82
82
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Temporal } from "
|
|
1
|
+
import type { Temporal } from "../../internal/temporal.js";
|
|
2
2
|
import type { ZoneBucketUnit } from "../../types/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Floor an instant to the start of the `unit` containing it **in `timeZone`**, and return
|
|
@@ -40,7 +40,7 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
40
40
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
41
41
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "UTC") // "2024-06-15T00:00:00Z" (the same instant, a different local day)
|
|
42
42
|
* @example floorToZone("2024-06-15T03:00:00Z", "hour", "Asia/Kathmandu") // "2024-06-15T02:15:00Z" (a +05:45 zone's hour boundary)
|
|
43
|
-
* @example floorToZone("2024-06-15T03:00:00Z", "week", "
|
|
43
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "week", "Asia/Tokyo") // "2024-06-09T15:00:00Z" (the Monday)
|
|
44
44
|
* @example floorToZone("2024-09-08T10:00:00Z", "day", "America/Santiago") // "2024-09-08T04:00:00Z" (local midnight is skipped, so the day starts at 01:00)
|
|
45
45
|
* @example floorToZone("2024-05-15T10:20:30.123Z", "days", "Europe/Berlin") // "2024-05-14T22:00:00Z" (plural unit name)
|
|
46
46
|
* @example floorToZone("2024-06-15T03:00:00Z", "year", "UTC") // "" (not a bucketing unit)
|
|
@@ -42,7 +42,7 @@ import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
|
42
42
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
43
43
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "UTC") // "2024-06-15T00:00:00Z" (the same instant, a different local day)
|
|
44
44
|
* @example floorToZone("2024-06-15T03:00:00Z", "hour", "Asia/Kathmandu") // "2024-06-15T02:15:00Z" (a +05:45 zone's hour boundary)
|
|
45
|
-
* @example floorToZone("2024-06-15T03:00:00Z", "week", "
|
|
45
|
+
* @example floorToZone("2024-06-15T03:00:00Z", "week", "Asia/Tokyo") // "2024-06-09T15:00:00Z" (the Monday)
|
|
46
46
|
* @example floorToZone("2024-09-08T10:00:00Z", "day", "America/Santiago") // "2024-09-08T04:00:00Z" (local midnight is skipped, so the day starts at 01:00)
|
|
47
47
|
* @example floorToZone("2024-05-15T10:20:30.123Z", "days", "Europe/Berlin") // "2024-05-14T22:00:00Z" (plural unit name)
|
|
48
48
|
* @example floorToZone("2024-06-15T03:00:00Z", "year", "UTC") // "" (not a bucketing unit)
|