@northguild/gmt 1.17.0 → 1.18.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 +462 -22
- package/dist/calendar/calculate/bucketRange.d.ts +3 -3
- package/dist/calendar/calculate/bucketRange.js +6 -6
- package/dist/calendar/calculate/floorToZone.d.ts +5 -3
- package/dist/calendar/calculate/floorToZone.js +6 -5
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
- package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
- package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
- package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
- package/dist/calendar/calculate/getOrdinalDate.js +2 -3
- package/dist/calendar/calculate/getQuarter.d.ts +21 -9
- package/dist/calendar/calculate/getQuarter.js +8 -12
- package/dist/calendar/hours/addOperatingTime.d.ts +53 -0
- package/dist/calendar/hours/addOperatingTime.js +59 -0
- package/dist/calendar/hours/index.d.ts +7 -0
- package/dist/calendar/hours/index.js +7 -0
- package/dist/calendar/hours/isOpenAt.d.ts +39 -0
- package/dist/calendar/hours/isOpenAt.js +44 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
- package/dist/calendar/hours/nextCloseAt.js +51 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
- package/dist/calendar/hours/nextOpenAt.js +47 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
- package/dist/calendar/hours/operatingIntervals.js +52 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
- package/dist/calendar/hours/operatingTimeBetween.js +49 -0
- package/dist/calendar/hours/recurringWindows.d.ts +61 -0
- package/dist/calendar/hours/recurringWindows.js +80 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationAs.d.ts +13 -8
- package/dist/duration/calculate/durationAs.js +4 -8
- package/dist/duration/compare/compareDurations.d.ts +12 -6
- package/dist/duration/compare/compareDurations.js +3 -6
- package/dist/duration/format/formatDuration.d.ts +16 -4
- package/dist/duration/format/formatDuration.js +4 -5
- package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
- package/dist/duration/normalize/normalizeDuration.js +6 -15
- package/dist/duration/parse/parseDuration.d.ts +21 -3
- package/dist/duration/parse/parseDuration.js +1 -3
- package/dist/instant/convert/classifyLocal.d.ts +1 -1
- package/dist/instant/convert/classifyLocal.js +1 -1
- package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
- package/dist/instant/convert/fromOffsetInstant.js +3 -1
- package/dist/instant/convert/resolveLocal.d.ts +12 -7
- package/dist/instant/convert/resolveLocal.js +6 -10
- package/dist/instant/convert/toOffsetInstant.d.ts +22 -9
- package/dist/instant/convert/toOffsetInstant.js +10 -3
- package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
- package/dist/intermodal/calculate/billingTimeline.js +2 -2
- package/dist/intermodal/calculate/chargeableDays.d.ts +13 -11
- package/dist/intermodal/calculate/chargeableDays.js +4 -9
- package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
- package/dist/intermodal/calculate/demurrageClock.js +7 -7
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +5 -4
- package/dist/intermodal/calculate/freeTimeExpiry.js +6 -6
- package/dist/internal/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +5 -1
- package/dist/internal/cycleFieldValue.d.ts +6 -4
- package/dist/internal/cycleFieldValue.js +6 -4
- package/dist/internal/daylightTime.d.ts +33 -0
- package/dist/internal/daylightTime.js +164 -0
- package/dist/internal/durationUntilString.js +4 -3
- package/dist/internal/englishCalendarNames.js +1 -2
- package/dist/internal/epochNanoseconds.d.ts +2 -0
- package/dist/internal/epochNanoseconds.js +2 -0
- package/dist/internal/exactDuration.d.ts +37 -0
- package/dist/internal/exactDuration.js +64 -0
- package/dist/internal/exactMoment.d.ts +72 -0
- package/dist/internal/exactMoment.js +114 -0
- package/dist/internal/fiscalCalendar.d.ts +4 -3
- package/dist/internal/fiscalCalendar.js +4 -3
- package/dist/internal/formatCalendarDays.d.ts +2 -2
- package/dist/internal/formatRelativeDuration.d.ts +21 -1
- package/dist/internal/formatRelativeDuration.js +47 -7
- package/dist/internal/index.d.ts +9 -4
- package/dist/internal/index.js +9 -4
- package/dist/internal/instantFormatOptions.js +2 -1
- package/dist/internal/instantNanoseconds.d.ts +75 -9
- package/dist/internal/instantNanoseconds.js +192 -11
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +2 -2
- package/dist/internal/normalizeTimeZone.js +2 -2
- package/dist/internal/operatingSchedule.d.ts +129 -0
- package/dist/internal/operatingSchedule.js +668 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +2 -2
- package/dist/internal/patternToken.js +28 -13
- package/dist/internal/plainDateUntil.js +10 -6
- package/dist/internal/punctuality.d.ts +38 -0
- package/dist/internal/punctuality.js +59 -0
- package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
- package/dist/internal/readDateTimeFormatOptions.js +93 -0
- package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
- package/dist/internal/resolveDurationRelativeTo.js +11 -1
- package/dist/internal/resolveRelativeRounding.d.ts +17 -6
- package/dist/internal/resolveRelativeRounding.js +27 -7
- package/dist/internal/resolveRelativeUnit.d.ts +30 -0
- package/dist/internal/resolveRelativeUnit.js +40 -0
- package/dist/internal/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- package/dist/internal/startOrEndOfZoned.js +2 -3
- package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
- package/dist/internal/temporalCompat/capabilities.js +35 -3
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/repros.d.ts +1 -1
- package/dist/internal/temporalCompat/repros.js +157 -0
- package/dist/internal/timestampEvents.d.ts +32 -0
- package/dist/internal/timestampEvents.js +76 -0
- package/dist/internal/utcZonedDateTime.d.ts +5 -2
- package/dist/internal/utcZonedDateTime.js +8 -5
- package/dist/internal/zonedBucket.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- package/dist/internal/zonedTransitionSearch.d.ts +27 -0
- package/dist/internal/zonedTransitionSearch.js +218 -0
- package/dist/internal/zonedWallClock.d.ts +21 -7
- package/dist/internal/zonedWallClock.js +87 -18
- package/dist/internal/zonedWallClockOperations.d.ts +26 -13
- package/dist/internal/zonedWallClockOperations.js +87 -34
- package/dist/interval/validate/isValidInterval.d.ts +6 -3
- package/dist/interval/validate/isValidInterval.js +6 -3
- package/dist/plain/calculate/addDate.d.ts +11 -8
- package/dist/plain/calculate/addDate.js +5 -8
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +1 -4
- package/dist/plain/calculate/cycleDate.d.ts +16 -7
- package/dist/plain/calculate/cycleDate.js +3 -7
- package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
- package/dist/plain/calculate/cycleDateTime.js +1 -4
- package/dist/plain/calculate/cycleTime.d.ts +10 -5
- package/dist/plain/calculate/cycleTime.js +3 -5
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDate.js +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.js +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 +8 -3
- package/dist/plain/calculate/endOfDate.js +1 -3
- package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
- package/dist/plain/calculate/endOfDateTime.js +1 -5
- package/dist/plain/calculate/endOfTime.d.ts +8 -2
- package/dist/plain/calculate/endOfTime.js +1 -2
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
- package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
- package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
- package/dist/plain/calculate/getWeekOfMonth.js +7 -4
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
- package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
- package/dist/plain/calculate/getWeeksInMonth.js +5 -2
- package/dist/plain/calculate/nextWeekday.d.ts +7 -3
- package/dist/plain/calculate/nextWeekday.js +1 -3
- package/dist/plain/calculate/previousWeekday.d.ts +7 -3
- package/dist/plain/calculate/previousWeekday.js +1 -3
- package/dist/plain/calculate/roundDate.d.ts +20 -7
- package/dist/plain/calculate/roundDate.js +3 -10
- package/dist/plain/calculate/roundDateTime.d.ts +22 -8
- package/dist/plain/calculate/roundDateTime.js +3 -11
- package/dist/plain/calculate/roundTime.d.ts +20 -4
- package/dist/plain/calculate/roundTime.js +3 -7
- package/dist/plain/calculate/setDate.d.ts +7 -5
- package/dist/plain/calculate/setDate.js +1 -5
- package/dist/plain/calculate/setDateTime.d.ts +8 -5
- package/dist/plain/calculate/setDateTime.js +1 -5
- package/dist/plain/calculate/setTime.d.ts +10 -6
- package/dist/plain/calculate/setTime.js +4 -6
- package/dist/plain/calculate/startOfDate.d.ts +8 -2
- package/dist/plain/calculate/startOfDate.js +1 -2
- package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
- package/dist/plain/calculate/startOfDateTime.js +1 -2
- package/dist/plain/calculate/startOfTime.d.ts +8 -1
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +1 -4
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +1 -4
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
- package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
- package/dist/plain/compare/areDatesEqualBy.js +8 -6
- package/dist/plain/compare/isBetweenDate.d.ts +13 -2
- package/dist/plain/compare/isBetweenDate.js +4 -4
- package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenDateTime.js +4 -4
- package/dist/plain/compare/isBetweenTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenTime.js +4 -4
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +1 -1
- package/dist/plain/compare/isThisUnit.js +1 -1
- package/dist/plain/format/formatCalendar.d.ts +21 -14
- package/dist/plain/format/formatCalendar.js +21 -16
- package/dist/plain/format/formatDate.js +5 -3
- package/dist/plain/format/formatDateRange.js +4 -2
- package/dist/plain/format/formatDateTime.js +4 -2
- package/dist/plain/format/formatDateTimeRange.js +4 -2
- package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
- package/dist/plain/format/formatDateTimeToParts.js +10 -6
- package/dist/plain/format/formatDateToParts.d.ts +13 -2
- package/dist/plain/format/formatDateToParts.js +8 -4
- package/dist/plain/format/formatRelativeDate.d.ts +16 -3
- package/dist/plain/format/formatRelativeDate.js +26 -15
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +8 -5
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +21 -13
- package/dist/plain/format/formatTime.js +4 -2
- package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
- package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDate.js +1 -3
- package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
- package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
- package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDate.js +2 -0
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
- package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtTime.js +2 -0
- package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
- package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
- package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
- package/dist/plain/map/mapDatesInRange.d.ts +8 -4
- package/dist/plain/map/mapDatesInRange.js +1 -4
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateWithPattern.js +10 -7
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDate.js +3 -3
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDate.js +2 -6
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
- package/dist/plain/validate/isValidDateRange.d.ts +19 -4
- package/dist/plain/validate/isValidDateRange.js +1 -4
- package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidDateTimeRange.js +2 -5
- package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidTimeRange.js +2 -5
- package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
- package/dist/precision/convert/fromExcelSerial.js +4 -5
- package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
- package/dist/precision/convert/fromNanoseconds.js +1 -1
- package/dist/precision/convert/toExcelSerial.d.ts +9 -3
- package/dist/precision/convert/toExcelSerial.js +3 -4
- package/dist/precision/convert/toNanoseconds.d.ts +11 -6
- package/dist/precision/convert/toNanoseconds.js +11 -6
- package/dist/precision/validate/isValidInstant.d.ts +12 -3
- package/dist/precision/validate/isValidInstant.js +12 -3
- package/dist/span/calculate/spanMs.d.ts +10 -4
- package/dist/span/calculate/spanMs.js +10 -4
- package/dist/span/calculate/spanNs.d.ts +10 -4
- package/dist/span/calculate/spanNs.js +10 -4
- package/dist/span/validate/isValidSpan.d.ts +8 -3
- package/dist/span/validate/isValidSpan.js +8 -3
- package/dist/transport/calculate/bestAvailable.d.ts +47 -0
- package/dist/transport/calculate/bestAvailable.js +76 -0
- package/dist/transport/calculate/crossingTime.d.ts +58 -0
- package/dist/transport/calculate/crossingTime.js +76 -0
- package/dist/transport/calculate/cutoffAt.d.ts +90 -0
- package/dist/transport/calculate/cutoffAt.js +209 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
- package/dist/transport/calculate/cutoffSchedule.js +71 -0
- package/dist/transport/calculate/dwellTime.d.ts +16 -7
- package/dist/transport/calculate/dwellTime.js +12 -8
- package/dist/transport/calculate/estimateDrift.d.ts +65 -0
- package/dist/transport/calculate/estimateDrift.js +75 -0
- package/dist/transport/calculate/index.d.ts +8 -0
- package/dist/transport/calculate/index.js +8 -0
- package/dist/transport/calculate/nextDeparture.d.ts +78 -0
- package/dist/transport/calculate/nextDeparture.js +131 -0
- package/dist/transport/calculate/punctualityRate.d.ts +42 -0
- package/dist/transport/calculate/punctualityRate.js +59 -0
- package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
- package/dist/transport/calculate/scheduleDelivery.js +300 -0
- package/dist/transport/calculate/transitTime.d.ts +21 -3
- package/dist/transport/calculate/transitTime.js +29 -46
- package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
- package/dist/transport/compare/classifyPunctuality.js +64 -0
- package/dist/transport/compare/index.d.ts +4 -0
- package/dist/transport/compare/index.js +4 -0
- package/dist/transport/compare/isPastCutoff.d.ts +33 -0
- package/dist/transport/compare/isPastCutoff.js +48 -0
- package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
- package/dist/transport/compare/scheduleDeviation.js +53 -0
- package/dist/transport/compare/timeToCutoff.d.ts +31 -0
- package/dist/transport/compare/timeToCutoff.js +47 -0
- package/dist/transport/convert/etaAtZone.d.ts +7 -0
- package/dist/transport/convert/etaAtZone.js +9 -4
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/types/business-calendar.d.ts +19 -14
- package/dist/types/calendar-options.d.ts +15 -3
- package/dist/types/date-cycle-field.d.ts +5 -0
- package/dist/types/date-duration-unit.d.ts +4 -0
- package/dist/types/date-time-cycle-field.d.ts +4 -0
- package/dist/types/date-time-duration-units.d.ts +4 -0
- package/dist/types/date-time-unit.d.ts +4 -0
- package/dist/types/date-unit.d.ts +4 -0
- package/dist/types/disambiguation.d.ts +8 -0
- package/dist/types/duration-relative-to.d.ts +8 -0
- package/dist/types/duration-string-options.d.ts +28 -0
- package/dist/types/fiscal-calendar.d.ts +1 -1
- package/dist/types/fractional-digit.d.ts +5 -0
- package/dist/types/free-time-options.d.ts +21 -11
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +2 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +71 -0
- package/dist/types/overflow.d.ts +6 -0
- package/dist/types/relative-rounding-method.d.ts +6 -0
- package/dist/types/relative-time-options.d.ts +33 -5
- package/dist/types/rounding-options.d.ts +27 -0
- package/dist/types/time-cycle-field.d.ts +4 -0
- package/dist/types/time-duration-unit.d.ts +4 -0
- package/dist/types/time-unit.d.ts +4 -0
- package/dist/types/transport-timestamps.d.ts +54 -0
- package/dist/types/transport-timestamps.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +19 -5
- package/dist/unix/calculate/addUnix.js +1 -5
- package/dist/unix/calculate/diffUnix.d.ts +13 -3
- package/dist/unix/calculate/diffUnix.js +1 -3
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/endOfUnix.d.ts +20 -4
- package/dist/unix/calculate/endOfUnix.js +1 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
- package/dist/unix/calculate/isBetweenUnix.js +4 -6
- package/dist/unix/calculate/roundUnix.d.ts +31 -3
- package/dist/unix/calculate/roundUnix.js +3 -6
- package/dist/unix/calculate/setUnix.d.ts +35 -9
- package/dist/unix/calculate/setUnix.js +4 -13
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/startOfUnix.d.ts +20 -4
- package/dist/unix/calculate/startOfUnix.js +1 -4
- package/dist/unix/calculate/subtractUnix.d.ts +19 -5
- package/dist/unix/calculate/subtractUnix.js +1 -5
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
- package/dist/unix/compare/areUnixEqualBy.js +13 -9
- package/dist/unix/compare/isAfterUnix.d.ts +7 -1
- package/dist/unix/compare/isAfterUnix.js +1 -1
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
- package/dist/unix/compare/isBeforeUnix.js +1 -1
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
- package/dist/unix/convert/convertUnixToZoned.js +4 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
- package/dist/unix/format/formatCalendarUnix.js +4 -5
- package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
- package/dist/unix/format/formatRelativeUnix.js +3 -5
- package/dist/unix/format/formatUnix.d.ts +24 -6
- package/dist/unix/format/formatUnix.js +8 -7
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
- package/dist/unix/interval/intervalCountUnix.js +2 -5
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
- package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
- package/dist/unix/interval/intervalLengthUnix.js +4 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
- package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
- package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
- package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseDateFromUnix.js +1 -2
- package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
- package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseTimeFromUnix.js +1 -2
- package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
- package/dist/unix/parse/parseUnitFromUnix.js +2 -3
- package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
- package/dist/unix/parse/parseWeekFromUnix.js +3 -7
- package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseYearFromUnix.js +2 -2
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +1 -4
- 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/endOfUtc.d.ts +16 -3
- package/dist/utc/calculate/endOfUtc.js +2 -3
- package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
- package/dist/utc/calculate/isBetweenUtc.js +4 -4
- package/dist/utc/calculate/roundUtc.d.ts +26 -9
- package/dist/utc/calculate/roundUtc.js +3 -12
- package/dist/utc/calculate/setUtc.d.ts +7 -4
- package/dist/utc/calculate/setUtc.js +1 -4
- package/dist/utc/calculate/startOfUtc.d.ts +15 -2
- package/dist/utc/calculate/startOfUtc.js +1 -2
- package/dist/utc/calculate/subtractUtc.d.ts +7 -4
- package/dist/utc/calculate/subtractUtc.js +1 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
- package/dist/utc/convert/convertUtcToZoned.js +1 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
- package/dist/utc/format/formatCalendarUtc.js +8 -6
- package/dist/utc/format/formatHttp.d.ts +1 -1
- package/dist/utc/format/formatHttp.js +1 -1
- package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
- package/dist/utc/format/formatRelativeUtc.js +9 -11
- package/dist/utc/format/formatUtc.d.ts +17 -15
- package/dist/utc/format/formatUtc.js +8 -8
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
- package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
- package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
- package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
- package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDateFromUtc.js +1 -3
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayFromUtc.js +1 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseHourFromUtc.js +1 -3
- package/dist/utc/parse/parseHttp.d.ts +1 -1
- package/dist/utc/parse/parseHttp.js +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMonthFromUtc.js +1 -3
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseSecondFromUtc.js +1 -3
- package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
- package/dist/utc/parse/parseTimeFromUtc.js +5 -6
- package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
- package/dist/utc/parse/parseUnitFromUtc.js +6 -8
- package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
- package/dist/utc/parse/parseWeekFromUtc.js +7 -13
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseYearFromUtc.js +1 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +6 -13
- package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
- package/dist/zoned/calculate/cycleZoned.js +1 -8
- package/dist/zoned/calculate/diffZoned.d.ts +1 -1
- package/dist/zoned/calculate/diffZoned.js +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
- package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
- package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
- package/dist/zoned/calculate/roundZoned.d.ts +21 -4
- package/dist/zoned/calculate/roundZoned.js +3 -7
- package/dist/zoned/calculate/setZoned.d.ts +25 -8
- package/dist/zoned/calculate/setZoned.js +4 -12
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
- package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
- package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
- package/dist/zoned/calculate/startOfZoned.js +1 -3
- package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
- package/dist/zoned/calculate/subtractZoned.js +6 -13
- package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
- package/dist/zoned/compare/areZonedEqualBy.js +7 -5
- package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
- package/dist/zoned/compare/isBetweenZoned.js +4 -3
- package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
- package/dist/zoned/compare/isInDaylightSaving.js +40 -44
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
- package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
- package/dist/zoned/convert/convertZonedToUnix.js +2 -4
- package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
- package/dist/zoned/convert/convertZonedToZoned.js +1 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +13 -9
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +7 -4
- package/dist/zoned/format/formatRfc2822.d.ts +2 -2
- package/dist/zoned/format/formatRfc2822.js +2 -2
- package/dist/zoned/format/formatRfc3339.d.ts +2 -3
- package/dist/zoned/format/formatRfc3339.js +2 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
- package/dist/zoned/format/formatTimeZoneName.js +5 -4
- package/dist/zoned/format/formatZonedDateTime.js +2 -1
- package/dist/zoned/format/formatZonedRange.js +2 -1
- package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
- package/dist/zoned/format/formatZonedToParts.js +8 -5
- package/dist/zoned/get/getDstTransitions.d.ts +9 -10
- package/dist/zoned/get/getDstTransitions.js +12 -3
- package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
- package/dist/zoned/get/getTimeZoneOffset.js +6 -3
- package/dist/zoned/get/getZonedNow.d.ts +13 -1
- package/dist/zoned/get/getZonedNow.js +12 -3
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
- package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
- package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
- package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
- package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
- package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
- package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
- package/dist/zoned/validate/hasDaylightSaving.js +47 -31
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
- package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
- package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
- package/dist/zoned/validate/isValidZonedRange.js +1 -4
- package/package.json +18 -5
- package/skills/gmt-arithmetic/SKILL.md +1 -1
- package/skills/gmt-basics/SKILL.md +10 -1
- package/skills/gmt-integration/SKILL.md +10 -5
- package/skills/gmt-timezone/SKILL.md +150 -21
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → operating-schedule.js} +0 -0
|
@@ -34,6 +34,15 @@ export declare function intervalXorAllZoned(intervals: Array<{
|
|
|
34
34
|
start: string;
|
|
35
35
|
end: string;
|
|
36
36
|
}>): Array<{
|
|
37
|
+
/**
|
|
38
|
+
* The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
|
|
39
|
+
* zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
|
|
40
|
+
*/
|
|
37
41
|
start: string;
|
|
42
|
+
/**
|
|
43
|
+
* The first instant after the interval, in the same format as `start`. It is exclusive: the
|
|
44
|
+
* interval holds everything from `start` up to but not including this value. It is always later
|
|
45
|
+
* than `start`.
|
|
46
|
+
*/
|
|
38
47
|
end: string;
|
|
39
48
|
}>;
|
|
@@ -44,6 +44,15 @@
|
|
|
44
44
|
* @example intervalXorZoned("invalid", "2024-06-30T12:00:00+00:00[UTC]", "2024-07-01T13:00:00+00:00[UTC]", "2024-12-31T17:00:00+00:00[UTC]") // []
|
|
45
45
|
*/
|
|
46
46
|
export declare function intervalXorZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
|
|
47
|
+
/**
|
|
48
|
+
* The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
|
|
49
|
+
* zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
|
|
50
|
+
*/
|
|
47
51
|
start: string;
|
|
52
|
+
/**
|
|
53
|
+
* The first instant after the interval, in the same format as `start`. It is exclusive: the
|
|
54
|
+
* interval holds everything from `start` up to but not including this value. It is always later
|
|
55
|
+
* than `start`.
|
|
56
|
+
*/
|
|
48
57
|
end: string;
|
|
49
58
|
}>;
|
|
@@ -38,6 +38,15 @@ export declare function mergeIntervalsZoned(intervals: Array<{
|
|
|
38
38
|
start: string;
|
|
39
39
|
end: string;
|
|
40
40
|
}>): Array<{
|
|
41
|
+
/**
|
|
42
|
+
* The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
|
|
43
|
+
* zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
|
|
44
|
+
*/
|
|
41
45
|
start: string;
|
|
46
|
+
/**
|
|
47
|
+
* The first instant after the interval, in the same format as `start`. It is exclusive: the
|
|
48
|
+
* interval holds everything from `start` up to but not including this value. It is always later
|
|
49
|
+
* than `start`.
|
|
50
|
+
*/
|
|
42
51
|
end: string;
|
|
43
52
|
}>;
|
|
@@ -6,14 +6,20 @@
|
|
|
6
6
|
* no instant and together cover `[start, end)` exactly once.
|
|
7
7
|
* - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
|
|
8
8
|
* - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
|
|
9
|
-
* (`start + k × amount
|
|
10
|
-
*
|
|
9
|
+
* (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
|
|
10
|
+
* lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
|
|
11
|
+
* to the month's last day, and stepping from that boundary would keep the shortened day
|
|
12
|
+
* (February 29, then March 29).
|
|
13
|
+
* - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
|
|
11
14
|
* - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
|
|
12
15
|
* clamp, and stepping keeps nanosecond precision where `k × amount` would pass
|
|
13
16
|
* `Number.MAX_SAFE_INTEGER`.
|
|
14
17
|
* - A calendar step that resolves to the same instant as the previous boundary (a deleted local
|
|
15
18
|
* day, such as 30 December 2011 in `Pacific/Apia`) is skipped, so no empty slice is produced.
|
|
16
19
|
* A step that goes backwards returns `[]`.
|
|
20
|
+
* - `start` and `end` may name different time zones. Steps are taken from `start`, so the first
|
|
21
|
+
* `start` and every inner boundary are written in `start`'s zone; the last `end` is the `end`
|
|
22
|
+
* argument, in its own zone.
|
|
17
23
|
* - Returns `[{ start, end }]` when `start === end` (zero-length interval).
|
|
18
24
|
* - Accepts RFC 9557 calendar-annotated zoned strings (as produced by `convertZonedToCalendar`) as
|
|
19
25
|
* well as bare ISO ones — E7 (issue #152). Stepping by a calendar unit ("1 month") resolves
|
|
@@ -24,9 +30,8 @@
|
|
|
24
30
|
* string (E7's D7-zoned).
|
|
25
31
|
* - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
|
|
26
32
|
* leap-second strings).
|
|
27
|
-
* - `options.maxPieces`
|
|
28
|
-
*
|
|
29
|
-
* otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
|
|
33
|
+
* - A split into more than `options.maxPieces` slices returns `[]`, decided from the span before
|
|
34
|
+
* stepping where it can be, and otherwise as soon as slice `maxPieces + 1` is due.
|
|
30
35
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, the `[u-ca=<id>]`
|
|
31
36
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
32
37
|
*
|
|
@@ -34,7 +39,7 @@
|
|
|
34
39
|
* @param end ISO 8601 zoned datetime string for the interval end
|
|
35
40
|
* @param unit duration unit string — any `DateTimeDurationUnit`
|
|
36
41
|
* @param amount positive number of units per step
|
|
37
|
-
* @param options optional
|
|
42
|
+
* @param options optional limit on the size of the output
|
|
38
43
|
* @returns array of `{ start, end }` records, or [] on invalid input
|
|
39
44
|
*
|
|
40
45
|
* @example splitIntervalByUnitZoned("2024-01-01T00:00:00+00:00[UTC]", "2024-01-02T00:00:00+00:00[UTC]", "hour", 6) // [{ start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-01T06:00:00+00:00[UTC]" }, { start: "2024-01-01T06:00:00+00:00[UTC]", end: "2024-01-01T12:00:00+00:00[UTC]" }, { start: "2024-01-01T12:00:00+00:00[UTC]", end: "2024-01-01T18:00:00+00:00[UTC]" }, { start: "2024-01-01T18:00:00+00:00[UTC]", end: "2024-01-02T00:00:00+00:00[UTC]" }]
|
|
@@ -47,8 +52,24 @@
|
|
|
47
52
|
* @example splitIntervalByUnitZoned("2024-01-01T00:00:00+00:00[UTC]", "2024-01-01T01:30:00+00:00[UTC]", "hour", 1, { maxPieces: 2 }) // [{ start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-01T01:00:00+00:00[UTC]" }, { start: "2024-01-01T01:00:00+00:00[UTC]", end: "2024-01-01T01:30:00+00:00[UTC]" }]
|
|
48
53
|
*/
|
|
49
54
|
export declare function splitIntervalByUnitZoned(start: string, end: string, unit: string, amount: number, options?: {
|
|
55
|
+
/**
|
|
56
|
+
* The most records the result may hold. A result that would hold more, or more than the longest
|
|
57
|
+
* possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
|
|
58
|
+
* positive safe integer also returns `[]`.
|
|
59
|
+
*
|
|
60
|
+
* @defaultValue `1_000_000`
|
|
61
|
+
*/
|
|
50
62
|
maxPieces?: number;
|
|
51
63
|
}): Array<{
|
|
64
|
+
/**
|
|
65
|
+
* The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
|
|
66
|
+
* zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
|
|
67
|
+
*/
|
|
52
68
|
start: string;
|
|
69
|
+
/**
|
|
70
|
+
* The first instant after the interval, in the same format as `start`. It is exclusive: the
|
|
71
|
+
* interval holds everything from `start` up to but not including this value. It can equal
|
|
72
|
+
* `start`, which makes the interval empty.
|
|
73
|
+
*/
|
|
53
74
|
end: string;
|
|
54
75
|
}>;
|
|
@@ -13,14 +13,20 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
|
|
|
13
13
|
* no instant and together cover `[start, end)` exactly once.
|
|
14
14
|
* - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
|
|
15
15
|
* - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
|
|
16
|
-
* (`start + k × amount
|
|
17
|
-
*
|
|
16
|
+
* (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
|
|
17
|
+
* lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
|
|
18
|
+
* to the month's last day, and stepping from that boundary would keep the shortened day
|
|
19
|
+
* (February 29, then March 29).
|
|
20
|
+
* - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
|
|
18
21
|
* - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
|
|
19
22
|
* clamp, and stepping keeps nanosecond precision where `k × amount` would pass
|
|
20
23
|
* `Number.MAX_SAFE_INTEGER`.
|
|
21
24
|
* - A calendar step that resolves to the same instant as the previous boundary (a deleted local
|
|
22
25
|
* day, such as 30 December 2011 in `Pacific/Apia`) is skipped, so no empty slice is produced.
|
|
23
26
|
* A step that goes backwards returns `[]`.
|
|
27
|
+
* - `start` and `end` may name different time zones. Steps are taken from `start`, so the first
|
|
28
|
+
* `start` and every inner boundary are written in `start`'s zone; the last `end` is the `end`
|
|
29
|
+
* argument, in its own zone.
|
|
24
30
|
* - Returns `[{ start, end }]` when `start === end` (zero-length interval).
|
|
25
31
|
* - Accepts RFC 9557 calendar-annotated zoned strings (as produced by `convertZonedToCalendar`) as
|
|
26
32
|
* well as bare ISO ones — E7 (issue #152). Stepping by a calendar unit ("1 month") resolves
|
|
@@ -31,9 +37,8 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
|
|
|
31
37
|
* string (E7's D7-zoned).
|
|
32
38
|
* - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
|
|
33
39
|
* leap-second strings).
|
|
34
|
-
* - `options.maxPieces`
|
|
35
|
-
*
|
|
36
|
-
* otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
|
|
40
|
+
* - A split into more than `options.maxPieces` slices returns `[]`, decided from the span before
|
|
41
|
+
* stepping where it can be, and otherwise as soon as slice `maxPieces + 1` is due.
|
|
37
42
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, the `[u-ca=<id>]`
|
|
38
43
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
39
44
|
*
|
|
@@ -41,7 +46,7 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
|
|
|
41
46
|
* @param end ISO 8601 zoned datetime string for the interval end
|
|
42
47
|
* @param unit duration unit string — any `DateTimeDurationUnit`
|
|
43
48
|
* @param amount positive number of units per step
|
|
44
|
-
* @param options optional
|
|
49
|
+
* @param options optional limit on the size of the output
|
|
45
50
|
* @returns array of `{ start, end }` records, or [] on invalid input
|
|
46
51
|
*
|
|
47
52
|
* @example splitIntervalByUnitZoned("2024-01-01T00:00:00+00:00[UTC]", "2024-01-02T00:00:00+00:00[UTC]", "hour", 6) // [{ start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-01T06:00:00+00:00[UTC]" }, { start: "2024-01-01T06:00:00+00:00[UTC]", end: "2024-01-01T12:00:00+00:00[UTC]" }, { start: "2024-01-01T12:00:00+00:00[UTC]", end: "2024-01-01T18:00:00+00:00[UTC]" }, { start: "2024-01-01T18:00:00+00:00[UTC]", end: "2024-01-02T00:00:00+00:00[UTC]" }]
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Both datetimes must have the same timezone.
|
|
5
5
|
* - Returns [] for invalid inputs, mismatched timezones, start > end, or invalid step.
|
|
6
|
-
* - `options.maxPieces`
|
|
7
|
-
* range holds more dates than that, it returns `[]` without generating any. An invalid
|
|
8
|
-
* `maxPieces` also returns `[]`.
|
|
6
|
+
* - A range holding more dates than `options.maxPieces` returns `[]` without generating any.
|
|
9
7
|
* - An explicit `undefined` `stepDays` is the default step, so `(start, end, undefined, options)`
|
|
10
8
|
* reaches `options`. **Compatibility:** before 1.16.0 it returned `[]`.
|
|
11
9
|
* - **End-inclusive, where the `interval*` functions are half-open.** This enumerates the dates a
|
|
@@ -16,7 +14,7 @@
|
|
|
16
14
|
* @param startZonedDateTime start zoned ISO 8601 datetime string
|
|
17
15
|
* @param endZonedDateTime end zoned ISO 8601 datetime string
|
|
18
16
|
* @param stepDays optional positive integer step in days
|
|
19
|
-
* @param options optional
|
|
17
|
+
* @param options optional limit on the size of the output
|
|
20
18
|
* @returns array of ISO date strings or [] when invalid
|
|
21
19
|
*
|
|
22
20
|
* @example mapZonedDatesInRange("+275760-09-12T00:00:00+00:00[UTC]", "+275760-09-13T00:00:00+00:00[UTC]") // ["+275760-09-12", "+275760-09-13"] (a range ending on the maximum instant)
|
|
@@ -28,5 +26,12 @@
|
|
|
28
26
|
* @example mapZonedDatesInRange("2024-02-28T12:00:00+00:00[UTC]", "2024-03-02T12:00:00+00:00[UTC]", 1, { maxPieces: 10 }) // ["2024-02-28", "2024-02-29", "2024-03-01", "2024-03-02"]
|
|
29
27
|
*/
|
|
30
28
|
export declare function mapZonedDatesInRange(startZonedDateTime: string, endZonedDateTime: string, stepDays?: number, options?: {
|
|
29
|
+
/**
|
|
30
|
+
* The most dates the result may hold. A result that would hold more, or more than the longest
|
|
31
|
+
* possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
|
|
32
|
+
* positive safe integer also returns `[]`.
|
|
33
|
+
*
|
|
34
|
+
* @defaultValue `1_000_000`
|
|
35
|
+
*/
|
|
31
36
|
maxPieces?: number;
|
|
32
37
|
}): string[];
|
|
@@ -8,9 +8,7 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
|
|
|
8
8
|
*
|
|
9
9
|
* - Both datetimes must have the same timezone.
|
|
10
10
|
* - Returns [] for invalid inputs, mismatched timezones, start > end, or invalid step.
|
|
11
|
-
* - `options.maxPieces`
|
|
12
|
-
* range holds more dates than that, it returns `[]` without generating any. An invalid
|
|
13
|
-
* `maxPieces` also returns `[]`.
|
|
11
|
+
* - A range holding more dates than `options.maxPieces` returns `[]` without generating any.
|
|
14
12
|
* - An explicit `undefined` `stepDays` is the default step, so `(start, end, undefined, options)`
|
|
15
13
|
* reaches `options`. **Compatibility:** before 1.16.0 it returned `[]`.
|
|
16
14
|
* - **End-inclusive, where the `interval*` functions are half-open.** This enumerates the dates a
|
|
@@ -21,7 +19,7 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
|
|
|
21
19
|
* @param startZonedDateTime start zoned ISO 8601 datetime string
|
|
22
20
|
* @param endZonedDateTime end zoned ISO 8601 datetime string
|
|
23
21
|
* @param stepDays optional positive integer step in days
|
|
24
|
-
* @param options optional
|
|
22
|
+
* @param options optional limit on the size of the output
|
|
25
23
|
* @returns array of ISO date strings or [] when invalid
|
|
26
24
|
*
|
|
27
25
|
* @example mapZonedDatesInRange("+275760-09-12T00:00:00+00:00[UTC]", "+275760-09-13T00:00:00+00:00[UTC]") // ["+275760-09-12", "+275760-09-13"] (a range ending on the maximum instant)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `Date:` headers use — into a zoned ISO 8601 datetime string.
|
|
4
4
|
*
|
|
5
5
|
* - **Decoding, not display.** Weekday and month names are English, per the
|
|
6
|
-
* fixed grammar (see `formatRfc2822`'s JSDoc
|
|
6
|
+
* fixed grammar (see `formatRfc2822`'s JSDoc); like
|
|
7
7
|
* every ABNF literal they match in any case (RFC 5234 §2.3).
|
|
8
8
|
* - **Reads what a conformant receiver must.** RFC 5322 §3.3 syntax: folding
|
|
9
9
|
* white space (spaces, tabs, folded lines), nested comments such as a
|
|
@@ -5,7 +5,7 @@ import { readRfc5322DateTime } from "../../internal/rfc5322DateTime.js";
|
|
|
5
5
|
* `Date:` headers use — into a zoned ISO 8601 datetime string.
|
|
6
6
|
*
|
|
7
7
|
* - **Decoding, not display.** Weekday and month names are English, per the
|
|
8
|
-
* fixed grammar (see `formatRfc2822`'s JSDoc
|
|
8
|
+
* fixed grammar (see `formatRfc2822`'s JSDoc); like
|
|
9
9
|
* every ABNF literal they match in any case (RFC 5234 §2.3).
|
|
10
10
|
* - **Reads what a conformant receiver must.** RFC 5322 §3.3 syntax: folding
|
|
11
11
|
* white space (spaces, tabs, folded lines), nested comments such as a
|
|
@@ -33,13 +33,11 @@ export type ZonedParseUnit = Temporal.SmallestUnit<"year" | "month" | "week" | "
|
|
|
33
33
|
* - Uses Temporal.ZonedDateTime.from to parse.
|
|
34
34
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
35
35
|
* does; `"dayOfWeek"` has no plural.
|
|
36
|
-
* - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
|
|
37
|
-
* days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
|
|
38
36
|
* - Returns "" for invalid input.
|
|
39
37
|
*
|
|
40
38
|
* @param value zoned ISO 8601 datetime string
|
|
41
39
|
* @param unit unit to extract
|
|
42
|
-
* @param optionsArg optional
|
|
40
|
+
* @param optionsArg optional setting for the week's first day; a non-object value (such as `null`) is invalid
|
|
43
41
|
* @returns string representation of the requested unit or "" when invalid
|
|
44
42
|
*
|
|
45
43
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "year") // "2024"
|
|
@@ -48,5 +46,13 @@ export type ZonedParseUnit = Temporal.SmallestUnit<"year" | "month" | "week" | "
|
|
|
48
46
|
* @example parseUnitFromZoned("invalid", "year") // ""
|
|
49
47
|
*/
|
|
50
48
|
export declare function parseUnitFromZoned(value: string, unit: ZonedParseUnit, optionsArg?: {
|
|
49
|
+
/**
|
|
50
|
+
* The first day of the week, which sets how the `"week"` unit is numbered. `"monday"` gives the
|
|
51
|
+
* ISO 8601 week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS
|
|
52
|
+
* #35 week number with a Sunday first day and one minimal day, where week 1 holds 1 January.
|
|
53
|
+
* Any other value returns `""`, whatever the unit.
|
|
54
|
+
*
|
|
55
|
+
* @defaultValue `"monday"`
|
|
56
|
+
*/
|
|
51
57
|
weekStartsOn?: "monday" | "sunday";
|
|
52
58
|
}): string;
|
|
@@ -27,13 +27,11 @@ function isValidZonedUnit(unit) {
|
|
|
27
27
|
* - Uses Temporal.ZonedDateTime.from to parse.
|
|
28
28
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
29
29
|
* does; `"dayOfWeek"` has no plural.
|
|
30
|
-
* - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
|
|
31
|
-
* days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
|
|
32
30
|
* - Returns "" for invalid input.
|
|
33
31
|
*
|
|
34
32
|
* @param value zoned ISO 8601 datetime string
|
|
35
33
|
* @param unit unit to extract
|
|
36
|
-
* @param optionsArg optional
|
|
34
|
+
* @param optionsArg optional setting for the week's first day; a non-object value (such as `null`) is invalid
|
|
37
35
|
* @returns string representation of the requested unit or "" when invalid
|
|
38
36
|
*
|
|
39
37
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "year") // "2024"
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the week of the year for a given ISO 8601 zoned datetime string.
|
|
3
3
|
*
|
|
4
|
-
* - `"monday"`
|
|
4
|
+
* - `"monday"` is the ISO 8601 week of the week-year: week 1 is the week containing the
|
|
5
5
|
* first Thursday, so late-December days can be week 1 of the next year (a value on 2024-12-31
|
|
6
6
|
* → 1). The result is 1–53.
|
|
7
7
|
* - `"sunday"` is the UTS #35 week of the week-year with a Sunday first day and minimal days 1:
|
|
8
8
|
* week 1 is the Sunday-first week holding 1 January, so late-December days can be week 1 of the
|
|
9
9
|
* next year (2024-12-31 → 1, 2000-12-30 → 53). The result is 1–53.
|
|
10
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
11
10
|
* - The week is read from the value's own date on its own wall clock.
|
|
12
11
|
* - Returns null for invalid input.
|
|
13
12
|
*
|
|
14
13
|
* @param value ISO zoned datetime string
|
|
15
|
-
* @param optionsArg optional
|
|
14
|
+
* @param optionsArg optional setting for the week's first day
|
|
16
15
|
* @returns Week number (1-53), or null on invalid input
|
|
17
16
|
*
|
|
18
17
|
* @example parseWeekFromZoned("2024-01-01T14:30:45.123+00:00[UTC]") // 1
|
|
@@ -23,5 +22,13 @@
|
|
|
23
22
|
* @example parseWeekFromZoned("invalid") // null
|
|
24
23
|
*/
|
|
25
24
|
export declare function parseWeekFromZoned(value: string, optionsArg?: {
|
|
25
|
+
/**
|
|
26
|
+
* The first day of the week, which sets how the week is numbered. `"monday"` gives the ISO 8601
|
|
27
|
+
* week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS #35 week
|
|
28
|
+
* number with a Sunday first day and one minimal day, where week 1 holds 1 January. Any other
|
|
29
|
+
* value returns `null`.
|
|
30
|
+
*
|
|
31
|
+
* @defaultValue `"monday"`
|
|
32
|
+
*/
|
|
26
33
|
weekStartsOn?: "monday" | "sunday";
|
|
27
34
|
}): number | null;
|
|
@@ -6,18 +6,17 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
6
6
|
/**
|
|
7
7
|
* Return the week of the year for a given ISO 8601 zoned datetime string.
|
|
8
8
|
*
|
|
9
|
-
* - `"monday"`
|
|
9
|
+
* - `"monday"` is the ISO 8601 week of the week-year: week 1 is the week containing the
|
|
10
10
|
* first Thursday, so late-December days can be week 1 of the next year (a value on 2024-12-31
|
|
11
11
|
* → 1). The result is 1–53.
|
|
12
12
|
* - `"sunday"` is the UTS #35 week of the week-year with a Sunday first day and minimal days 1:
|
|
13
13
|
* week 1 is the Sunday-first week holding 1 January, so late-December days can be week 1 of the
|
|
14
14
|
* next year (2024-12-31 → 1, 2000-12-30 → 53). The result is 1–53.
|
|
15
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
16
15
|
* - The week is read from the value's own date on its own wall clock.
|
|
17
16
|
* - Returns null for invalid input.
|
|
18
17
|
*
|
|
19
18
|
* @param value ISO zoned datetime string
|
|
20
|
-
* @param optionsArg optional
|
|
19
|
+
* @param optionsArg optional setting for the week's first day
|
|
21
20
|
* @returns Week number (1-53), or null on invalid input
|
|
22
21
|
*
|
|
23
22
|
* @example parseWeekFromZoned("2024-01-01T14:30:45.123+00:00[UTC]") // 1
|
|
@@ -1,17 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Check whether
|
|
2
|
+
* Check whether a timeZone observes daylight saving time at a reference instant.
|
|
3
3
|
*
|
|
4
|
-
* -
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* - True when the zone is in daylight time at the reference instant, or a daylight period begins
|
|
5
|
+
* less than 365 days after it. So a zone in its winter is true, and a zone that has stopped
|
|
6
|
+
* changing its clocks is false.
|
|
7
|
+
* - With `options.at` the answer does not depend on the day the code runs.
|
|
8
|
+
* - The rule is GMT's own definition, not the tz database's daylight flag, which no JavaScript
|
|
9
|
+
* API exposes: daylight time runs from a forward change of the zone's clocks to the backward
|
|
10
|
+
* change of the same size that undoes it, less than 365 days later.
|
|
11
|
+
* - Read as standard time, because the offsets do not show otherwise: the last summer before a
|
|
12
|
+
* zone kept its daylight offset for good; a daylight period held 365 days or longer; one that
|
|
13
|
+
* began, ended or was interrupted by a move of standard time, so the offset changes part-way
|
|
14
|
+
* through and the rest, or all, of it is not paired (`Asia/Tomsk` 2002); and one whose end is
|
|
15
|
+
* past the last instant Temporal can represent.
|
|
16
|
+
* - A forward change never undone is a change of standard time: `Europe/Istanbul` is false from
|
|
17
|
+
* 2016 on, although its clocks went forward in March 2016.
|
|
18
|
+
* - Read from the runtime's time zone data, so the answer can change when that data does.
|
|
19
|
+
* - Returns false for an invalid timeZone, an invalid `at`, an options argument that is not an
|
|
20
|
+
* object, and a fixed offset.
|
|
7
21
|
*
|
|
8
22
|
* @param timeZone timeZone identifier to check
|
|
9
|
-
* @
|
|
23
|
+
* @param options optional setting for the reference instant
|
|
24
|
+
* @returns boolean indicating whether the timeZone observes DST, or false on invalid input
|
|
10
25
|
*
|
|
11
|
-
* @example hasDaylightSaving("America/New_York") // true
|
|
12
|
-
* @example hasDaylightSaving("
|
|
13
|
-
* @example hasDaylightSaving("Asia/Tokyo")
|
|
14
|
-
* @example hasDaylightSaving("
|
|
15
|
-
* @example hasDaylightSaving("
|
|
26
|
+
* @example hasDaylightSaving("America/New_York", { at: "2024-01-15T12:00:00Z" }) // true
|
|
27
|
+
* @example hasDaylightSaving("Australia/Sydney", { at: "2024-06-15T12:00:00Z" }) // true (winter; the next period begins in October)
|
|
28
|
+
* @example hasDaylightSaving("Asia/Tokyo", { at: "2024-01-15T12:00:00Z" }) // false
|
|
29
|
+
* @example hasDaylightSaving("Europe/Istanbul", { at: "2015-06-15T12:00:00Z" }) // true
|
|
30
|
+
* @example hasDaylightSaving("Europe/Istanbul", { at: "2016-06-15T12:00:00Z" }) // false (the March 2016 advance was never undone)
|
|
31
|
+
* @example hasDaylightSaving("America/Sao_Paulo", { at: "2018-06-15T12:00:00Z" }) // true
|
|
32
|
+
* @example hasDaylightSaving("America/Sao_Paulo", { at: "2019-06-15T12:00:00Z" }) // false (last daylight period ended 2019-02-17)
|
|
33
|
+
* @example hasDaylightSaving("UTC", { at: "2024-01-15T12:00:00Z" }) // false
|
|
34
|
+
* @example hasDaylightSaving("+05:00", { at: "2024-01-15T12:00:00Z" }) // false
|
|
35
|
+
* @example hasDaylightSaving("Invalid/Zone", { at: "2024-01-15T12:00:00Z" }) // false
|
|
36
|
+
* @example hasDaylightSaving("America/New_York", { at: "2024-01-15" }) // false (not an instant)
|
|
16
37
|
*/
|
|
17
|
-
export declare function hasDaylightSaving(timeZone: string
|
|
38
|
+
export declare function hasDaylightSaving(timeZone: string, options?: {
|
|
39
|
+
/**
|
|
40
|
+
* The reference instant the zone is judged at, as an ISO 8601 instant string ending in `Z`, an
|
|
41
|
+
* offset or a bracketed zone. It only names an instant, as `isValidInstant` reads it: a
|
|
42
|
+
* bracketed zone is not validated and does not replace `timeZone`. An invalid value returns
|
|
43
|
+
* false.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue The current instant.
|
|
46
|
+
*/
|
|
47
|
+
at?: string;
|
|
48
|
+
}): boolean;
|
|
@@ -1,41 +1,57 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isOptionsArgument, observesDaylightTime, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
3
|
+
import { isValidTimeZone } from "./isValidTimeZone.js";
|
|
2
4
|
/**
|
|
3
|
-
* Check whether
|
|
5
|
+
* Check whether a timeZone observes daylight saving time at a reference instant.
|
|
4
6
|
*
|
|
5
|
-
* -
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* - True when the zone is in daylight time at the reference instant, or a daylight period begins
|
|
8
|
+
* less than 365 days after it. So a zone in its winter is true, and a zone that has stopped
|
|
9
|
+
* changing its clocks is false.
|
|
10
|
+
* - With `options.at` the answer does not depend on the day the code runs.
|
|
11
|
+
* - The rule is GMT's own definition, not the tz database's daylight flag, which no JavaScript
|
|
12
|
+
* API exposes: daylight time runs from a forward change of the zone's clocks to the backward
|
|
13
|
+
* change of the same size that undoes it, less than 365 days later.
|
|
14
|
+
* - Read as standard time, because the offsets do not show otherwise: the last summer before a
|
|
15
|
+
* zone kept its daylight offset for good; a daylight period held 365 days or longer; one that
|
|
16
|
+
* began, ended or was interrupted by a move of standard time, so the offset changes part-way
|
|
17
|
+
* through and the rest, or all, of it is not paired (`Asia/Tomsk` 2002); and one whose end is
|
|
18
|
+
* past the last instant Temporal can represent.
|
|
19
|
+
* - A forward change never undone is a change of standard time: `Europe/Istanbul` is false from
|
|
20
|
+
* 2016 on, although its clocks went forward in March 2016.
|
|
21
|
+
* - Read from the runtime's time zone data, so the answer can change when that data does.
|
|
22
|
+
* - Returns false for an invalid timeZone, an invalid `at`, an options argument that is not an
|
|
23
|
+
* object, and a fixed offset.
|
|
8
24
|
*
|
|
9
25
|
* @param timeZone timeZone identifier to check
|
|
10
|
-
* @
|
|
26
|
+
* @param options optional setting for the reference instant
|
|
27
|
+
* @returns boolean indicating whether the timeZone observes DST, or false on invalid input
|
|
11
28
|
*
|
|
12
|
-
* @example hasDaylightSaving("America/New_York") // true
|
|
13
|
-
* @example hasDaylightSaving("
|
|
14
|
-
* @example hasDaylightSaving("Asia/Tokyo")
|
|
15
|
-
* @example hasDaylightSaving("
|
|
16
|
-
* @example hasDaylightSaving("
|
|
29
|
+
* @example hasDaylightSaving("America/New_York", { at: "2024-01-15T12:00:00Z" }) // true
|
|
30
|
+
* @example hasDaylightSaving("Australia/Sydney", { at: "2024-06-15T12:00:00Z" }) // true (winter; the next period begins in October)
|
|
31
|
+
* @example hasDaylightSaving("Asia/Tokyo", { at: "2024-01-15T12:00:00Z" }) // false
|
|
32
|
+
* @example hasDaylightSaving("Europe/Istanbul", { at: "2015-06-15T12:00:00Z" }) // true
|
|
33
|
+
* @example hasDaylightSaving("Europe/Istanbul", { at: "2016-06-15T12:00:00Z" }) // false (the March 2016 advance was never undone)
|
|
34
|
+
* @example hasDaylightSaving("America/Sao_Paulo", { at: "2018-06-15T12:00:00Z" }) // true
|
|
35
|
+
* @example hasDaylightSaving("America/Sao_Paulo", { at: "2019-06-15T12:00:00Z" }) // false (last daylight period ended 2019-02-17)
|
|
36
|
+
* @example hasDaylightSaving("UTC", { at: "2024-01-15T12:00:00Z" }) // false
|
|
37
|
+
* @example hasDaylightSaving("+05:00", { at: "2024-01-15T12:00:00Z" }) // false
|
|
38
|
+
* @example hasDaylightSaving("Invalid/Zone", { at: "2024-01-15T12:00:00Z" }) // false
|
|
39
|
+
* @example hasDaylightSaving("America/New_York", { at: "2024-01-15" }) // false (not an instant)
|
|
17
40
|
*/
|
|
18
|
-
export function hasDaylightSaving(timeZone) {
|
|
41
|
+
export function hasDaylightSaving(timeZone, options) {
|
|
42
|
+
if (!isValidTimeZone(timeZone) || !isOptionsArgument(options)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
19
45
|
try {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const zdtJuly = zonedDateTimeFrom({
|
|
30
|
-
year: 2024,
|
|
31
|
-
month: 7,
|
|
32
|
-
day: 15,
|
|
33
|
-
hour: 12,
|
|
34
|
-
minute: 0,
|
|
35
|
-
second: 0,
|
|
36
|
-
timeZone,
|
|
37
|
-
});
|
|
38
|
-
return zdtJanuary.offsetNanoseconds !== zdtJuly.offsetNanoseconds;
|
|
46
|
+
const at = options?.at;
|
|
47
|
+
if (at === undefined) {
|
|
48
|
+
return observesDaylightTime(Temporal.Now.zonedDateTimeISO(timeZone));
|
|
49
|
+
}
|
|
50
|
+
const epochNanoseconds = parseInstantNanoseconds(at);
|
|
51
|
+
if (epochNanoseconds === null) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return observesDaylightTime(Temporal.Instant.fromEpochNanoseconds(epochNanoseconds).toZonedDateTimeISO(timeZone));
|
|
39
55
|
}
|
|
40
56
|
catch {
|
|
41
57
|
return false;
|
|
@@ -6,7 +6,15 @@
|
|
|
6
6
|
* space or lower-case `t` separator, a lower-case `z`, an hour-only time or offset, and a date
|
|
7
7
|
* without a time are rejected, although `Temporal.ZonedDateTime.from` reads them.
|
|
8
8
|
* - Uses Temporal.ZonedDateTime.from for validation.
|
|
9
|
+
* - A written offset must agree with the bracketed zone, as TC39 `ToTemporalZonedDateTime`
|
|
10
|
+
* matches it: an offset written to the minute may be the zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]` for −00:44:30, which is how Temporal writes it), and an offset
|
|
12
|
+
* written with seconds must be the zone's offset exactly.
|
|
9
13
|
* - Rejects leap seconds.
|
|
14
|
+
* - With an offset, the local date must be inside Temporal's date range, as
|
|
15
|
+
* `Temporal.ZonedDateTime.from` requires (`CheckISODaysRange`): a zoned string on
|
|
16
|
+
* −271821-04-19, which a zone west of Greenwich shows for the first hours of the instant
|
|
17
|
+
* range, is rejected although `isValidInstant` accepts it.
|
|
10
18
|
* - Reads RFC 9557 annotations as `Temporal.ZonedDateTime.from` does: elective ones
|
|
11
19
|
* (`[foo=bar]`) are ignored and an unknown critical one (`[!foo=bar]`) is rejected.
|
|
12
20
|
* - The calendar must be ISO: `[u-ca=iso8601]` is accepted, and a non-ISO calendar annotation is
|
|
@@ -24,6 +32,11 @@
|
|
|
24
32
|
* @example isValidZonedDateTime("20241003T143000-0400[America/New_York]") // false (basic format)
|
|
25
33
|
* @example isValidZonedDateTime("2024-10-03 14:30:00-04:00[America/New_York]") // false (space separator)
|
|
26
34
|
* @example isValidZonedDateTime("2024-10-03[America/New_York]") // false (no time)
|
|
35
|
+
* @example isValidZonedDateTime("2024-10-03T14:30:00-05:00[America/New_York]") // false (New York is -04:00 in October)
|
|
36
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // true (-00:45 is Monrovia's -00:44:30, rounded)
|
|
37
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:44:30[Africa/Monrovia]") // true
|
|
38
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:45:00[Africa/Monrovia]") // false (an offset with seconds must be exact)
|
|
39
|
+
* @example isValidZonedDateTime("-271821-04-19T23:59:00-00:01[Europe/London]") // false (the local date is before Temporal's date range)
|
|
27
40
|
* @example isValidZonedDateTime("invalid") // false
|
|
28
41
|
*/
|
|
29
42
|
export declare function isValidZonedDateTime(value: string): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { zonedDateTimeFrom } from "../../internal/index.js";
|
|
2
1
|
import { hasZonedDateTimeShape } from "../../internal/isoStringBody.js";
|
|
2
|
+
import { zonedDateTimeFrom } from "../../internal/zonedWallClock.js";
|
|
3
3
|
import { isLeapSecond } from "../../plain/validate/isLeapSecond.js";
|
|
4
4
|
/**
|
|
5
5
|
* Validate whether a string is a valid ISO 8601 zoned datetime string.
|
|
@@ -9,7 +9,15 @@ import { isLeapSecond } from "../../plain/validate/isLeapSecond.js";
|
|
|
9
9
|
* space or lower-case `t` separator, a lower-case `z`, an hour-only time or offset, and a date
|
|
10
10
|
* without a time are rejected, although `Temporal.ZonedDateTime.from` reads them.
|
|
11
11
|
* - Uses Temporal.ZonedDateTime.from for validation.
|
|
12
|
+
* - A written offset must agree with the bracketed zone, as TC39 `ToTemporalZonedDateTime`
|
|
13
|
+
* matches it: an offset written to the minute may be the zone's sub-minute offset rounded
|
|
14
|
+
* (`-00:45[Africa/Monrovia]` for −00:44:30, which is how Temporal writes it), and an offset
|
|
15
|
+
* written with seconds must be the zone's offset exactly.
|
|
12
16
|
* - Rejects leap seconds.
|
|
17
|
+
* - With an offset, the local date must be inside Temporal's date range, as
|
|
18
|
+
* `Temporal.ZonedDateTime.from` requires (`CheckISODaysRange`): a zoned string on
|
|
19
|
+
* −271821-04-19, which a zone west of Greenwich shows for the first hours of the instant
|
|
20
|
+
* range, is rejected although `isValidInstant` accepts it.
|
|
13
21
|
* - Reads RFC 9557 annotations as `Temporal.ZonedDateTime.from` does: elective ones
|
|
14
22
|
* (`[foo=bar]`) are ignored and an unknown critical one (`[!foo=bar]`) is rejected.
|
|
15
23
|
* - The calendar must be ISO: `[u-ca=iso8601]` is accepted, and a non-ISO calendar annotation is
|
|
@@ -27,6 +35,11 @@ import { isLeapSecond } from "../../plain/validate/isLeapSecond.js";
|
|
|
27
35
|
* @example isValidZonedDateTime("20241003T143000-0400[America/New_York]") // false (basic format)
|
|
28
36
|
* @example isValidZonedDateTime("2024-10-03 14:30:00-04:00[America/New_York]") // false (space separator)
|
|
29
37
|
* @example isValidZonedDateTime("2024-10-03[America/New_York]") // false (no time)
|
|
38
|
+
* @example isValidZonedDateTime("2024-10-03T14:30:00-05:00[America/New_York]") // false (New York is -04:00 in October)
|
|
39
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // true (-00:45 is Monrovia's -00:44:30, rounded)
|
|
40
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:44:30[Africa/Monrovia]") // true
|
|
41
|
+
* @example isValidZonedDateTime("1960-01-01T00:20:00-00:45:00[Africa/Monrovia]") // false (an offset with seconds must be exact)
|
|
42
|
+
* @example isValidZonedDateTime("-271821-04-19T23:59:00-00:01[Europe/London]") // false (the local date is before Temporal's date range)
|
|
30
43
|
* @example isValidZonedDateTime("invalid") // false
|
|
31
44
|
*/
|
|
32
45
|
export function isValidZonedDateTime(value) {
|
|
@@ -5,16 +5,13 @@
|
|
|
5
5
|
* - Both inputs must be valid ISO 8601 zoned datetime strings in extended format, as
|
|
6
6
|
* `isValidZonedDateTime` requires: basic format, a space or lower-case `t` separator, a
|
|
7
7
|
* lower-case `z` and a date without a time return `false`.
|
|
8
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
9
8
|
* - Comparison is done by instant, so intervals spanning DST transitions are compared
|
|
10
9
|
* by absolute time.
|
|
11
10
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
12
11
|
* - Annotations are read as `isValidZonedDateTime` reads them: elective ones are ignored,
|
|
13
12
|
* `[u-ca=iso8601]` is accepted, and a non-ISO calendar on either endpoint returns `false`.
|
|
14
13
|
*
|
|
15
|
-
* @param
|
|
16
|
-
* @param value2 second ISO ZonedDateTime string
|
|
17
|
-
* @param options optional allowEqual flag
|
|
14
|
+
* @param props the two endpoints of the range and its optional settings
|
|
18
15
|
* @returns boolean indicating whether the zoned range is valid
|
|
19
16
|
*
|
|
20
17
|
* @example isValidZonedRange({ value1: "2024-01-01T10:00:00+00:00[UTC]", value2: "2024-12-31T23:59:59+00:00[UTC]" }) // true
|
|
@@ -25,9 +22,23 @@
|
|
|
25
22
|
* @example isValidZonedRange({ value1: "2024-01-01 10:00:00+00:00[UTC]", value2: "2024-12-31T23:59:59+00:00[UTC]" }) // false (space separator)
|
|
26
23
|
*/
|
|
27
24
|
export declare function isValidZonedRange(props: {
|
|
25
|
+
/** The start of the range, as an ISO 8601 zoned datetime string. */
|
|
28
26
|
value1: string;
|
|
27
|
+
/** The end of the range, as an ISO 8601 zoned datetime string. */
|
|
29
28
|
value2: string;
|
|
29
|
+
/**
|
|
30
|
+
* The settings for the comparison. It must be an object or omitted; any other value, `null`
|
|
31
|
+
* included, returns `false`.
|
|
32
|
+
*
|
|
33
|
+
* @defaultValue None. Two values at the same instant are not a valid range.
|
|
34
|
+
*/
|
|
30
35
|
options?: {
|
|
36
|
+
/**
|
|
37
|
+
* Whether `value1` at the same instant as `value2` is a valid range. `false` requires `value1`
|
|
38
|
+
* to be before `value2`.
|
|
39
|
+
*
|
|
40
|
+
* @defaultValue `false`
|
|
41
|
+
*/
|
|
31
42
|
allowEqual?: boolean;
|
|
32
43
|
};
|
|
33
44
|
}): boolean;
|
|
@@ -10,16 +10,13 @@ import { hasZonedDateTimeShape } from "../../internal/isoStringBody.js";
|
|
|
10
10
|
* - Both inputs must be valid ISO 8601 zoned datetime strings in extended format, as
|
|
11
11
|
* `isValidZonedDateTime` requires: basic format, a space or lower-case `t` separator, a
|
|
12
12
|
* lower-case `z` and a date without a time return `false`.
|
|
13
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
14
13
|
* - Comparison is done by instant, so intervals spanning DST transitions are compared
|
|
15
14
|
* by absolute time.
|
|
16
15
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
17
16
|
* - Annotations are read as `isValidZonedDateTime` reads them: elective ones are ignored,
|
|
18
17
|
* `[u-ca=iso8601]` is accepted, and a non-ISO calendar on either endpoint returns `false`.
|
|
19
18
|
*
|
|
20
|
-
* @param
|
|
21
|
-
* @param value2 second ISO ZonedDateTime string
|
|
22
|
-
* @param options optional allowEqual flag
|
|
19
|
+
* @param props the two endpoints of the range and its optional settings
|
|
23
20
|
* @returns boolean indicating whether the zoned range is valid
|
|
24
21
|
*
|
|
25
22
|
* @example isValidZonedRange({ value1: "2024-01-01T10:00:00+00:00[UTC]", value2: "2024-12-31T23:59:59+00:00[UTC]" }) // true
|