@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
|
@@ -14,20 +14,13 @@ import type { Disambiguation, Offset, Overflow } from "../../types/index.js";
|
|
|
14
14
|
* their current value. An empty object is a no-op. `calendar`, `timeZone`, and `offset` are
|
|
15
15
|
* deliberately excluded from `fields` — this function only sets date/time components, never
|
|
16
16
|
* the zone or calendar identity, and `offset` is controlled separately via `options.offset`.
|
|
17
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
|
|
18
|
-
* `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
|
|
19
|
-
* (resulting in "").
|
|
20
|
-
* - `offset` defaults to `"prefer"`, as Temporal's `ZonedDateTime#with` does: when the source's
|
|
21
|
-
* offset is still valid for the new wall time (a repeated fall-back hour), it is kept and
|
|
22
|
-
* `disambiguation` is not consulted; pass `offset: "ignore"` to re-resolve the wall time through
|
|
23
|
-
* `disambiguation` instead. In a gap the source offset cannot hold, so `disambiguation` applies.
|
|
24
17
|
* - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
|
|
25
18
|
* to keep that resolution.
|
|
26
19
|
* - Returns "" for invalid input.
|
|
27
20
|
*
|
|
28
21
|
* @param value zoned ISO 8601 datetime string
|
|
29
22
|
* @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
|
|
30
|
-
* @param options optional
|
|
23
|
+
* @param options optional settings for resolving an out-of-range date and the new wall-clock time
|
|
31
24
|
* @returns zoned ISO 8601 string with fields set, or "" on invalid input
|
|
32
25
|
*
|
|
33
26
|
* @example setZoned("2024-03-10T12:00:00-04:00[America/New_York]", { hour: 9 }) // "2024-03-10T09:00:00-04:00[America/New_York]"
|
|
@@ -39,7 +32,31 @@ import type { Disambiguation, Offset, Overflow } from "../../types/index.js";
|
|
|
39
32
|
* @example setZoned("invalid", { hour: 9 }) // ""
|
|
40
33
|
*/
|
|
41
34
|
export declare function setZoned(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset">, options?: {
|
|
35
|
+
/**
|
|
36
|
+
* What happens when the result names a day its month does not have, such as setting `month: 2`
|
|
37
|
+
* on 31 January. `"constrain"` clamps to the last valid day; `"reject"` returns `""`.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
40
|
+
*/
|
|
42
41
|
overflow?: Overflow;
|
|
42
|
+
/**
|
|
43
|
+
* How the new wall-clock time resolves when it falls in a DST gap or overlap and `offset` does
|
|
44
|
+
* not settle it. In a fall-back overlap `"compatible"` and `"earlier"` take the earlier instant
|
|
45
|
+
* and `"later"` the later one; in a spring-forward gap `"compatible"` and `"later"` move the
|
|
46
|
+
* wall clock forward by the gap length and `"earlier"` back by it. `"reject"` returns `""` for
|
|
47
|
+
* both.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
50
|
+
*/
|
|
43
51
|
disambiguation?: Disambiguation;
|
|
52
|
+
/**
|
|
53
|
+
* How the source's UTC offset is treated at the new wall-clock time, as in Temporal's
|
|
54
|
+
* `ZonedDateTime#with`. `"prefer"` keeps it while it is still valid there (a repeated fall-back
|
|
55
|
+
* hour) and otherwise resolves through `disambiguation`; `"ignore"` always resolves through
|
|
56
|
+
* `disambiguation`. `"use"` keeps the offset even when that moves the wall clock, and
|
|
57
|
+
* `"reject"` returns `""` when the offset is not valid for the new wall time.
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue `"prefer"`, Temporal's default.
|
|
60
|
+
*/
|
|
44
61
|
offset?: Offset;
|
|
45
62
|
}): string;
|
|
@@ -2,6 +2,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import { resolveOverflow, withZonedFields, zonedDateTimeFrom, } from "../../internal/index.js";
|
|
3
3
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
5
6
|
/**
|
|
6
7
|
* Return a zoned ISO 8601 datetime string with the given `fields` set on `value`.
|
|
7
8
|
*
|
|
@@ -16,20 +17,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
16
17
|
* their current value. An empty object is a no-op. `calendar`, `timeZone`, and `offset` are
|
|
17
18
|
* deliberately excluded from `fields` — this function only sets date/time components, never
|
|
18
19
|
* the zone or calendar identity, and `offset` is controlled separately via `options.offset`.
|
|
19
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
|
|
20
|
-
* `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
|
|
21
|
-
* (resulting in "").
|
|
22
|
-
* - `offset` defaults to `"prefer"`, as Temporal's `ZonedDateTime#with` does: when the source's
|
|
23
|
-
* offset is still valid for the new wall time (a repeated fall-back hour), it is kept and
|
|
24
|
-
* `disambiguation` is not consulted; pass `offset: "ignore"` to re-resolve the wall time through
|
|
25
|
-
* `disambiguation` instead. In a gap the source offset cannot hold, so `disambiguation` applies.
|
|
26
20
|
* - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
|
|
27
21
|
* to keep that resolution.
|
|
28
22
|
* - Returns "" for invalid input.
|
|
29
23
|
*
|
|
30
24
|
* @param value zoned ISO 8601 datetime string
|
|
31
25
|
* @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
|
|
32
|
-
* @param options optional
|
|
26
|
+
* @param options optional settings for resolving an out-of-range date and the new wall-clock time
|
|
33
27
|
* @returns zoned ISO 8601 string with fields set, or "" on invalid input
|
|
34
28
|
*
|
|
35
29
|
* @example setZoned("2024-03-10T12:00:00-04:00[America/New_York]", { hour: 9 }) // "2024-03-10T09:00:00-04:00[America/New_York]"
|
|
@@ -48,11 +42,9 @@ export function setZoned(value, fields, options) {
|
|
|
48
42
|
if (!isValidZonedDateTime(value))
|
|
49
43
|
return "";
|
|
50
44
|
const overflow = resolveOverflow(options?.overflow);
|
|
51
|
-
const disambiguation = options?.disambiguation
|
|
52
|
-
? "compatible"
|
|
53
|
-
: options.disambiguation;
|
|
45
|
+
const disambiguation = optionOrDefault(options?.disambiguation, "compatible");
|
|
54
46
|
// Temporal ZonedDateTime#with's own default: keep the source offset while it is still valid.
|
|
55
|
-
const offset = options?.offset
|
|
47
|
+
const offset = optionOrDefault(options?.offset, "prefer");
|
|
56
48
|
try {
|
|
57
49
|
const zoned = zonedDateTimeFrom(value);
|
|
58
50
|
// Temporal.ZonedDateTime.prototype.with() throws on an empty fields object ("no supported
|
|
@@ -4,11 +4,10 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - Calculates which quarter (1-4) the date falls into and returns the first instant of that quarter, with every field below the day reset — milliseconds, microseconds and nanoseconds included.
|
|
6
6
|
* - Returns the real start of the local quarter in `value`'s own zone (see `floorToZone`), so the result is never after `value`: a skipped first midnight starts at the quarter's first real instant, and a repeated one (`Africa/Tunis`, 1978-10-01) at its first pass.
|
|
7
|
-
* - `fractionalSecondDigits` controls how many fractional seconds are included in the output: 0 (default — no fractional seconds), 3 (milliseconds), 6 (microseconds), or 9 (nanoseconds).
|
|
8
7
|
* - Validation is performed on the input.
|
|
9
8
|
*
|
|
10
9
|
* @param value ISO ZonedDateTime string
|
|
11
|
-
* @param optionsArg optional
|
|
10
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
12
11
|
* @returns ISO ZonedDateTime string for the start of the quarter, or "" on invalid input
|
|
13
12
|
*
|
|
14
13
|
* @example startOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-01-01T00:00:00+00:00[UTC]"
|
|
@@ -18,5 +17,11 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
18
17
|
* @example startOfQuarterForZoned("invalid") // ""
|
|
19
18
|
*/
|
|
20
19
|
export declare function startOfQuarterForZoned(value: string, optionsArg?: {
|
|
20
|
+
/**
|
|
21
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
22
|
+
* drop trailing zeros. A start has no sub-second part, so any digits written are zeros.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue `0`
|
|
25
|
+
*/
|
|
21
26
|
fractionalSecondDigits?: FractionalDigit;
|
|
22
27
|
}): string;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { zonedDateTimeFrom, zonedUnitStart } from "../../internal/index.js";
|
|
2
2
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
3
3
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
4
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
4
5
|
/**
|
|
5
6
|
* Return the start of the quarter for a given zoned ISO datetime.
|
|
6
7
|
*
|
|
7
8
|
* - Calculates which quarter (1-4) the date falls into and returns the first instant of that quarter, with every field below the day reset — milliseconds, microseconds and nanoseconds included.
|
|
8
9
|
* - Returns the real start of the local quarter in `value`'s own zone (see `floorToZone`), so the result is never after `value`: a skipped first midnight starts at the quarter's first real instant, and a repeated one (`Africa/Tunis`, 1978-10-01) at its first pass.
|
|
9
|
-
* - `fractionalSecondDigits` controls how many fractional seconds are included in the output: 0 (default — no fractional seconds), 3 (milliseconds), 6 (microseconds), or 9 (nanoseconds).
|
|
10
10
|
* - Validation is performed on the input.
|
|
11
11
|
*
|
|
12
12
|
* @param value ISO ZonedDateTime string
|
|
13
|
-
* @param optionsArg optional
|
|
13
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
14
14
|
* @returns ISO ZonedDateTime string for the start of the quarter, or "" on invalid input
|
|
15
15
|
*
|
|
16
16
|
* @example startOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-01-01T00:00:00+00:00[UTC]"
|
|
@@ -27,9 +27,7 @@ export function startOfQuarterForZoned(value, optionsArg) {
|
|
|
27
27
|
if (!isValidZonedDateTime(value)) {
|
|
28
28
|
return "";
|
|
29
29
|
}
|
|
30
|
-
const fractionalSecondDigits = optionsArg?.fractionalSecondDigits
|
|
31
|
-
? 0
|
|
32
|
-
: optionsArg.fractionalSecondDigits;
|
|
30
|
+
const fractionalSecondDigits = optionOrDefault(optionsArg?.fractionalSecondDigits, 0);
|
|
33
31
|
try {
|
|
34
32
|
const start = zonedUnitStart(zonedDateTimeFrom(value), "quarter");
|
|
35
33
|
return start ? start.toString({ fractionalSecondDigits }) : "";
|
|
@@ -4,18 +4,16 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
|
|
|
4
4
|
* Return the start of the specified date-time `unit` for a given zoned ISO 8601 datetime string.
|
|
5
5
|
*
|
|
6
6
|
* - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
|
|
7
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
|
|
8
7
|
* - Returns the real start of the local `unit` containing `value` in its own zone — the same bucket `floorToZone` uses — so the result is never after `value`. A local hour `Pacific/Chatham`'s spring-forward leaves only 15 minutes long starts at 03:45, the second pass of New York's repeated fall-back hour starts at its own 01:00 (−05:00), and a day whose midnight was skipped starts at its first real instant.
|
|
9
8
|
* - A transition that reopens the previous local date makes that stretch its own bucket. `America/Goose_Bay` fell back at 00:01 on 7 November 2010, re-entering 6 November for 59 minutes, so `2010-11-06T23:30:00-04:00` has a day that starts at 23:01 — consistent with `floorToZone`, `bucketRange` and `intervalCountZoned`.
|
|
10
9
|
* - A midnight repeated on the same date stays one day: `America/Havana`'s 2024-11-03 starts at its first 00:00 (−04:00) and runs 25 hours, matching Temporal's `startOfDay()`.
|
|
11
10
|
* - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
|
|
12
11
|
* takes neither. Those ignored options were removed in 1.16.0.
|
|
13
|
-
* - `fractionalSecondDigits` defaults to 3, 6 or 9 for "millisecond", "microsecond" or "nanosecond", and 0 otherwise.
|
|
14
12
|
* - Returns "" for invalid input.
|
|
15
13
|
*
|
|
16
14
|
* @param value zoned ISO 8601 datetime string
|
|
17
15
|
* @param unit date or time unit, singular or plural, to specify the unit for the start
|
|
18
|
-
* @param
|
|
16
|
+
* @param optionsArg optional settings for the week's first day and the precision of the output string
|
|
19
17
|
* @returns zoned ISO 8601 string representing the start of the specified unit, or "" on invalid input
|
|
20
18
|
*
|
|
21
19
|
* @example startOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-01T00:00:00+00:00[UTC]"
|
|
@@ -26,6 +24,20 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
|
|
|
26
24
|
* @example startOfZoned("2024-11-03T00:30:00-05:00[America/Havana]", "day") // "2024-11-03T00:00:00-04:00[America/Havana]" (midnight repeated on the same date: one 25-hour day)
|
|
27
25
|
*/
|
|
28
26
|
export declare function startOfZoned(value: string, unit: Temporal.SmallestUnit<DateTimeUnit>, optionsArg?: {
|
|
27
|
+
/**
|
|
28
|
+
* The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
|
|
29
|
+
* 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
|
|
30
|
+
* `""`, whatever the unit.
|
|
31
|
+
*
|
|
32
|
+
* @defaultValue `"monday"`
|
|
33
|
+
*/
|
|
29
34
|
weekStartsOn?: "monday" | "sunday";
|
|
35
|
+
/**
|
|
36
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
37
|
+
* drop trailing zeros. Fewer digits than `unit` names truncate, as Temporal's `toString` does.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue The digits `unit` names: `3` for `"millisecond"`, `6` for `"microsecond"`, `9`
|
|
40
|
+
* for `"nanosecond"` and `0` for any coarser unit.
|
|
41
|
+
*/
|
|
30
42
|
fractionalSecondDigits?: FractionalDigit;
|
|
31
43
|
}): string;
|
|
@@ -4,18 +4,16 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
4
4
|
* Return the start of the specified date-time `unit` for a given zoned ISO 8601 datetime string.
|
|
5
5
|
*
|
|
6
6
|
* - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
|
|
7
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
|
|
8
7
|
* - Returns the real start of the local `unit` containing `value` in its own zone — the same bucket `floorToZone` uses — so the result is never after `value`. A local hour `Pacific/Chatham`'s spring-forward leaves only 15 minutes long starts at 03:45, the second pass of New York's repeated fall-back hour starts at its own 01:00 (−05:00), and a day whose midnight was skipped starts at its first real instant.
|
|
9
8
|
* - A transition that reopens the previous local date makes that stretch its own bucket. `America/Goose_Bay` fell back at 00:01 on 7 November 2010, re-entering 6 November for 59 minutes, so `2010-11-06T23:30:00-04:00` has a day that starts at 23:01 — consistent with `floorToZone`, `bucketRange` and `intervalCountZoned`.
|
|
10
9
|
* - A midnight repeated on the same date stays one day: `America/Havana`'s 2024-11-03 starts at its first 00:00 (−04:00) and runs 25 hours, matching Temporal's `startOfDay()`.
|
|
11
10
|
* - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
|
|
12
11
|
* takes neither. Those ignored options were removed in 1.16.0.
|
|
13
|
-
* - `fractionalSecondDigits` defaults to 3, 6 or 9 for "millisecond", "microsecond" or "nanosecond", and 0 otherwise.
|
|
14
12
|
* - Returns "" for invalid input.
|
|
15
13
|
*
|
|
16
14
|
* @param value zoned ISO 8601 datetime string
|
|
17
15
|
* @param unit date or time unit, singular or plural, to specify the unit for the start
|
|
18
|
-
* @param
|
|
16
|
+
* @param optionsArg optional settings for the week's first day and the precision of the output string
|
|
19
17
|
* @returns zoned ISO 8601 string representing the start of the specified unit, or "" on invalid input
|
|
20
18
|
*
|
|
21
19
|
* @example startOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-01T00:00:00+00:00[UTC]"
|
|
@@ -13,13 +13,9 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
13
13
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
14
14
|
* - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
|
|
15
15
|
* days) moves the wall-clock date, then the time portion (hours and smaller) is subtracted in exact
|
|
16
|
-
* time. `disambiguation`
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* and "earlier" take the earlier instant and "later" the later one; in a spring-forward
|
|
20
|
-
* (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
|
|
21
|
-
* "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
|
|
22
|
-
* result, so a time-only duration ignores it.
|
|
16
|
+
* time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
|
|
17
|
+
* portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
|
|
18
|
+
* exact-time result.
|
|
23
19
|
* - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
|
|
24
20
|
* forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
|
|
25
21
|
* fail. Pass "compatible" (or omit it) to keep the forward result.
|
|
@@ -31,13 +27,11 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
31
27
|
* - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
|
|
32
28
|
* a plain date-time, which has no UTC offset for it to act on (Temporal
|
|
33
29
|
* `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
|
|
34
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
|
|
35
|
-
* 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
36
30
|
* - Returns "" for invalid input.
|
|
37
31
|
*
|
|
38
32
|
* @param value ISO 8601 zoned datetime string, optionally calendar-annotated
|
|
39
33
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
|
|
40
|
-
* @param optionsArg optional
|
|
34
|
+
* @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
|
|
41
35
|
* @returns zoned ISO 8601 string on success, or "" on invalid input
|
|
42
36
|
*
|
|
43
37
|
* @example subtractZoned("2024-03-10T12:00:00-04:00[America/New_York]", { days: 5 }) // "2024-03-05T12:00:00-05:00[America/New_York]"
|
|
@@ -54,6 +48,22 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
54
48
|
* @example subtractZoned("2024-03-10T14:30:00-04:00[u-ca=hebrew][America/New_York]", { days: 1 }) // "" (calendar before zone is not RFC 9557)
|
|
55
49
|
*/
|
|
56
50
|
export declare function subtractZoned(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, optionsArg?: {
|
|
51
|
+
/**
|
|
52
|
+
* How the intermediate wall-clock date-time, reached after the date portion of the duration is
|
|
53
|
+
* applied, resolves when it falls in a DST gap or overlap. In a fall-back overlap
|
|
54
|
+
* `"compatible"` and `"earlier"` take the earlier instant and `"later"` the later one; in a
|
|
55
|
+
* spring-forward gap `"compatible"` and `"later"` move the wall clock forward by the gap length
|
|
56
|
+
* and `"earlier"` back by it. `"reject"` returns `""` for both, and a time-only duration
|
|
57
|
+
* ignores the option.
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
60
|
+
*/
|
|
57
61
|
disambiguation?: Disambiguation;
|
|
62
|
+
/**
|
|
63
|
+
* What happens when the result names a day its month does not have, such as subtracting 1 month
|
|
64
|
+
* from 31 March. `"constrain"` clamps to the last valid day; `"reject"` returns `""`.
|
|
65
|
+
*
|
|
66
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
67
|
+
*/
|
|
58
68
|
overflow?: Overflow;
|
|
59
69
|
}): string;
|
|
@@ -3,6 +3,7 @@ import { addToZonedDisambiguated, calendarSystemOfZonedValue, formatZonedInCalen
|
|
|
3
3
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
4
4
|
import { isValidCalendarZonedDateTime } from "../validate/index.js";
|
|
5
5
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
6
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
6
7
|
/**
|
|
7
8
|
* Subtract a temporal amount from a zoned ISO 8601 datetime string and return a zoned ISO 8601 string.
|
|
8
9
|
*
|
|
@@ -17,13 +18,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
17
18
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
18
19
|
* - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
|
|
19
20
|
* days) moves the wall-clock date, then the time portion (hours and smaller) is subtracted in exact
|
|
20
|
-
* time. `disambiguation`
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* and "earlier" take the earlier instant and "later" the later one; in a spring-forward
|
|
24
|
-
* (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
|
|
25
|
-
* "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
|
|
26
|
-
* result, so a time-only duration ignores it.
|
|
21
|
+
* time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
|
|
22
|
+
* portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
|
|
23
|
+
* exact-time result.
|
|
27
24
|
* - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
|
|
28
25
|
* forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
|
|
29
26
|
* fail. Pass "compatible" (or omit it) to keep the forward result.
|
|
@@ -35,13 +32,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
35
32
|
* - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
|
|
36
33
|
* a plain date-time, which has no UTC offset for it to act on (Temporal
|
|
37
34
|
* `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
|
|
38
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
|
|
39
|
-
* 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
40
35
|
* - Returns "" for invalid input.
|
|
41
36
|
*
|
|
42
37
|
* @param value ISO 8601 zoned datetime string, optionally calendar-annotated
|
|
43
38
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
|
|
44
|
-
* @param optionsArg optional
|
|
39
|
+
* @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
|
|
45
40
|
* @returns zoned ISO 8601 string on success, or "" on invalid input
|
|
46
41
|
*
|
|
47
42
|
* @example subtractZoned("2024-03-10T12:00:00-04:00[America/New_York]", { days: 5 }) // "2024-03-05T12:00:00-05:00[America/New_York]"
|
|
@@ -70,9 +65,7 @@ export function subtractZoned(value, units, optionsArg) {
|
|
|
70
65
|
if (!validZonedDateTime || !validUnits || !validAmounts) {
|
|
71
66
|
return "";
|
|
72
67
|
}
|
|
73
|
-
const disambiguation = optionsArg?.disambiguation
|
|
74
|
-
? "compatible"
|
|
75
|
-
: optionsArg.disambiguation;
|
|
68
|
+
const disambiguation = optionOrDefault(optionsArg?.disambiguation, "compatible");
|
|
76
69
|
const overflow = resolveOverflow(optionsArg?.overflow);
|
|
77
70
|
try {
|
|
78
71
|
const calendar = calendarSystemOfZonedValue(value);
|
|
@@ -6,8 +6,11 @@ import type { DateTimeUnit } from "../../types/index.js";
|
|
|
6
6
|
* - Equality is measured on each value's own local wall-clock fields (its own
|
|
7
7
|
* time zone), not on the underlying instant or time zone identifier — the
|
|
8
8
|
* same instant can be "the same day" in one zone and a different day in
|
|
9
|
-
* another, and this function answers per each value's own zone,
|
|
10
|
-
*
|
|
9
|
+
* another, and this function answers per each value's own zone, because a
|
|
10
|
+
* `Temporal.ZonedDateTime` reads its calendar and clock fields in its own
|
|
11
|
+
* time zone.
|
|
12
|
+
* - Comparison: Luxon's `dt.hasSame(other, unit)` also compares the two values'
|
|
13
|
+
* local times.
|
|
11
14
|
* - Each value's start-of-unit is its real local bucket (see `startOfZoned`), so a bucket a
|
|
12
15
|
* zone transition shortened is still its own unit: in `Pacific/Chatham` on its 2024
|
|
13
16
|
* spring-forward, 03:50 and 04:05 are different hours, because the 03:00 hour lasted only
|
|
@@ -18,10 +21,9 @@ import type { DateTimeUnit } from "../../types/index.js";
|
|
|
18
21
|
* compared by their buckets' local labels, since their instants never line up.
|
|
19
22
|
* - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
|
|
20
23
|
* - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
|
|
21
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
|
|
22
24
|
* - Returns false for an unsupported unit or invalid input.
|
|
23
25
|
*
|
|
24
|
-
* Mapping from date-fns
|
|
26
|
+
* Mapping from date-fns:
|
|
25
27
|
* - `isSameDay(a, b)` → `areZonedEqualBy(a, b, "day")`
|
|
26
28
|
* - `isSameMonth(a, b)` → `areZonedEqualBy(a, b, "month")`
|
|
27
29
|
* - `isSameYear(a, b)` → `areZonedEqualBy(a, b, "year")`
|
|
@@ -29,7 +31,7 @@ import type { DateTimeUnit } from "../../types/index.js";
|
|
|
29
31
|
* @param value1 first zoned ISO datetime string
|
|
30
32
|
* @param value2 second zoned ISO datetime string
|
|
31
33
|
* @param unit date or time unit, singular or plural, to compare by
|
|
32
|
-
* @param optionsArg optional
|
|
34
|
+
* @param optionsArg optional setting for the week's first day
|
|
33
35
|
* @returns true if both values share the same local start-of-unit boundary, false on an unsupported unit or invalid input
|
|
34
36
|
*
|
|
35
37
|
* @example areZonedEqualBy("2024-03-15T10:00:00-04:00[America/New_York]", "2024-03-15T20:00:00+01:00[Europe/Berlin]", "day") // true (both are local March 15 in their own zone)
|
|
@@ -39,5 +41,12 @@ import type { DateTimeUnit } from "../../types/index.js";
|
|
|
39
41
|
* @example areZonedEqualBy("invalid", "2024-03-15T10:00:00-04:00[America/New_York]", "day") // false
|
|
40
42
|
*/
|
|
41
43
|
export declare function areZonedEqualBy(value1: string, value2: string, unit: Temporal.SmallestUnit<DateTimeUnit>, optionsArg?: {
|
|
44
|
+
/**
|
|
45
|
+
* The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
|
|
46
|
+
* 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
|
|
47
|
+
* false, whatever the unit.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `"monday"`
|
|
50
|
+
*/
|
|
42
51
|
weekStartsOn?: "monday" | "sunday";
|
|
43
52
|
}): boolean;
|
|
@@ -12,8 +12,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
12
12
|
* - Equality is measured on each value's own local wall-clock fields (its own
|
|
13
13
|
* time zone), not on the underlying instant or time zone identifier — the
|
|
14
14
|
* same instant can be "the same day" in one zone and a different day in
|
|
15
|
-
* another, and this function answers per each value's own zone,
|
|
16
|
-
*
|
|
15
|
+
* another, and this function answers per each value's own zone, because a
|
|
16
|
+
* `Temporal.ZonedDateTime` reads its calendar and clock fields in its own
|
|
17
|
+
* time zone.
|
|
18
|
+
* - Comparison: Luxon's `dt.hasSame(other, unit)` also compares the two values'
|
|
19
|
+
* local times.
|
|
17
20
|
* - Each value's start-of-unit is its real local bucket (see `startOfZoned`), so a bucket a
|
|
18
21
|
* zone transition shortened is still its own unit: in `Pacific/Chatham` on its 2024
|
|
19
22
|
* spring-forward, 03:50 and 04:05 are different hours, because the 03:00 hour lasted only
|
|
@@ -24,10 +27,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
24
27
|
* compared by their buckets' local labels, since their instants never line up.
|
|
25
28
|
* - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
|
|
26
29
|
* - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
|
|
27
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
|
|
28
30
|
* - Returns false for an unsupported unit or invalid input.
|
|
29
31
|
*
|
|
30
|
-
* Mapping from date-fns
|
|
32
|
+
* Mapping from date-fns:
|
|
31
33
|
* - `isSameDay(a, b)` → `areZonedEqualBy(a, b, "day")`
|
|
32
34
|
* - `isSameMonth(a, b)` → `areZonedEqualBy(a, b, "month")`
|
|
33
35
|
* - `isSameYear(a, b)` → `areZonedEqualBy(a, b, "year")`
|
|
@@ -35,7 +37,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
35
37
|
* @param value1 first zoned ISO datetime string
|
|
36
38
|
* @param value2 second zoned ISO datetime string
|
|
37
39
|
* @param unit date or time unit, singular or plural, to compare by
|
|
38
|
-
* @param optionsArg optional
|
|
40
|
+
* @param optionsArg optional setting for the week's first day
|
|
39
41
|
* @returns true if both values share the same local start-of-unit boundary, false on an unsupported unit or invalid input
|
|
40
42
|
*
|
|
41
43
|
* @example areZonedEqualBy("2024-03-15T10:00:00-04:00[America/New_York]", "2024-03-15T20:00:00+01:00[Europe/Berlin]", "day") // true (both are local March 15 in their own zone)
|
|
@@ -7,13 +7,25 @@
|
|
|
7
7
|
* @param zoned ISO ZonedDateTime string to check
|
|
8
8
|
* @param start ISO ZonedDateTime string for the start of the range
|
|
9
9
|
* @param end ISO ZonedDateTime string for the end of the range
|
|
10
|
-
* @param options optional
|
|
10
|
+
* @param options optional settings for whether each end of the range is included
|
|
11
11
|
* @returns boolean indicating whether zoned is between start and end
|
|
12
12
|
*
|
|
13
13
|
* @example isBetweenZoned("2024-02-29T12:00:00+00:00[UTC]", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // true
|
|
14
14
|
* @example isBetweenZoned("invalid", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // false
|
|
15
15
|
*/
|
|
16
16
|
export declare function isBetweenZoned(zoned: string, start: string, end: string, options?: {
|
|
17
|
+
/**
|
|
18
|
+
* Whether `zoned` at the same instant as `start` counts as inside the range. `false` requires
|
|
19
|
+
* it to be after `start`.
|
|
20
|
+
*
|
|
21
|
+
* @defaultValue `true`
|
|
22
|
+
*/
|
|
17
23
|
inclusiveStart?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Whether `zoned` at the same instant as `end` counts as inside the range. `false` requires it
|
|
26
|
+
* to be before `end`.
|
|
27
|
+
*
|
|
28
|
+
* @defaultValue `true`
|
|
29
|
+
*/
|
|
18
30
|
inclusiveEnd?: boolean;
|
|
19
31
|
}): boolean;
|
|
@@ -3,6 +3,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
3
3
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
4
4
|
import { zonedDateTimeFrom } from "../../internal/index.js";
|
|
5
5
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
6
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
6
7
|
/**
|
|
7
8
|
* Return true when `zoned` is between `start` and `end` (inclusive by default).
|
|
8
9
|
*
|
|
@@ -12,7 +13,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
12
13
|
* @param zoned ISO ZonedDateTime string to check
|
|
13
14
|
* @param start ISO ZonedDateTime string for the start of the range
|
|
14
15
|
* @param end ISO ZonedDateTime string for the end of the range
|
|
15
|
-
* @param options optional
|
|
16
|
+
* @param options optional settings for whether each end of the range is included
|
|
16
17
|
* @returns boolean indicating whether zoned is between start and end
|
|
17
18
|
*
|
|
18
19
|
* @example isBetweenZoned("2024-02-29T12:00:00+00:00[UTC]", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // true
|
|
@@ -27,8 +28,8 @@ export function isBetweenZoned(zoned, start, end, options) {
|
|
|
27
28
|
// reading of it gives `false`: ECMA-402 reads a boolean option through ToBoolean (null → false),
|
|
28
29
|
// and the house rule rejects an invalid member outright — neither yields `true`. So `null`
|
|
29
30
|
// behaves here exactly as `0` and `""` already do.
|
|
30
|
-
const inclusiveStart = options?.inclusiveStart
|
|
31
|
-
const inclusiveEnd = options?.inclusiveEnd
|
|
31
|
+
const inclusiveStart = optionOrDefault(options?.inclusiveStart, true);
|
|
32
|
+
const inclusiveEnd = optionOrDefault(options?.inclusiveEnd, true);
|
|
32
33
|
if (!isValidZonedDateTime(zoned) ||
|
|
33
34
|
!isValidZonedDateTime(start) ||
|
|
34
35
|
!isValidZonedDateTime(end)) {
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Check whether a zoned value's instant falls within daylight saving time.
|
|
3
3
|
*
|
|
4
|
-
* - The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
4
|
+
* - The rule is GMT's own definition, not the tz database's daylight flag. No JavaScript API
|
|
5
|
+
* exposes that flag, and it cannot be worked out from offsets.
|
|
6
|
+
* - The rule: daylight time runs from a forward change of the zone's clocks to the backward
|
|
7
|
+
* change that undoes it. A backward change undoes the most recent forward change of the same
|
|
8
|
+
* size not yet undone, if it comes less than 365 days after it. The instant is in daylight
|
|
9
|
+
* time when it is at or after such a forward change and before its backward change.
|
|
10
|
+
* - Read from the zone's offset changes in the runtime's time zone data
|
|
11
|
+
* (`getTimeZoneTransition`); GMT holds no zone data. The answer changes only at a clock
|
|
12
|
+
* change, and the answer for a past instant can change when the runtime's data learns that a
|
|
13
|
+
* zone stopped changing its clocks.
|
|
14
|
+
* - A forward change never undone, or undone 365 days or more later, is a change of standard
|
|
15
|
+
* time: `Europe/Istanbul` is on standard time from its last advance in March 2016.
|
|
16
|
+
* - The higher of two alternating offsets is the daylight one, as in the tz database's rearguard
|
|
17
|
+
* form. Its main form reverses `Europe/Dublin` (winter is its daylight time, a negative save)
|
|
18
|
+
* and `Africa/Casablanca` (the Ramadan weeks are); here Dublin's summer and Casablanca's
|
|
19
|
+
* months at `+01:00` are daylight time.
|
|
20
|
+
* - Read as standard time, because the offsets do not show otherwise:
|
|
21
|
+
* - the last summer before a zone kept its daylight offset for good (the tz database dates
|
|
22
|
+
* Istanbul's switch 2016-09-07, with no clock change);
|
|
23
|
+
* - a daylight period held 365 days or longer (`America/Santiago` 2014 to 2016);
|
|
24
|
+
* - a daylight period that began, ended or was interrupted by a move of standard time, so the
|
|
25
|
+
* clocks went back by another amount or not at all (`America/Kentucky/Monticello` 2000), or
|
|
26
|
+
* the offset changed part-way through and the rest, or all, of the period is not paired
|
|
27
|
+
* (`Asia/Tomsk` 2002, `Asia/Jerusalem` 1948);
|
|
28
|
+
* - a daylight period whose end is past the last instant Temporal can represent.
|
|
29
|
+
* - Read as daylight time: a move of standard time reversed by the same amount less than 365
|
|
30
|
+
* days later (`America/Metlakatla` 2018 to 2019).
|
|
31
|
+
* - The other DST functions answer other questions: `hasDaylightSaving(timeZone, { at })` whether
|
|
32
|
+
* a zone observes DST at an instant, `getDstTransitions(timeZone, year)` where its offset
|
|
33
|
+
* changes fall, and `classifyLocal` whether a wall time is ambiguous. See
|
|
34
|
+
* docs/dst-disambiguation.md.
|
|
35
|
+
* - Returns false for invalid input, and for a zone with a fixed offset.
|
|
15
36
|
*
|
|
16
37
|
* @param value zoned ISO 8601 datetime string
|
|
17
38
|
* @returns true if the instant is in daylight saving time, false otherwise or on invalid input
|
|
@@ -20,6 +41,12 @@
|
|
|
20
41
|
* @example isInDaylightSaving("2024-01-15T12:00:00-05:00[America/New_York]") // false
|
|
21
42
|
* @example isInDaylightSaving("2024-01-15T12:00:00+11:00[Australia/Sydney]") // true (southern-hemisphere summer)
|
|
22
43
|
* @example isInDaylightSaving("2024-07-15T12:00:00+09:00[Asia/Tokyo]") // false (Asia/Tokyo has no DST)
|
|
44
|
+
* @example isInDaylightSaving("2015-07-01T12:00:00+03:00[Europe/Istanbul]") // true (undone 2015-11-08)
|
|
45
|
+
* @example isInDaylightSaving("2016-07-01T12:00:00+03:00[Europe/Istanbul]") // false (the March 2016 advance was never undone)
|
|
46
|
+
* @example isInDaylightSaving("2016-12-01T12:00:00+03:00[Europe/Istanbul]") // false (permanent +03:00)
|
|
47
|
+
* @example isInDaylightSaving("2019-07-15T12:00:00+01:00[Europe/Dublin]") // true
|
|
48
|
+
* @example isInDaylightSaving("2019-12-01T12:00:00+01:00[Africa/Casablanca]") // true (put back 2020-04-19)
|
|
49
|
+
* @example isInDaylightSaving("2019-07-15T12:00:00+00:00[UTC]") // false
|
|
23
50
|
* @example isInDaylightSaving("invalid") // false
|
|
24
51
|
*/
|
|
25
52
|
export declare function isInDaylightSaving(value: string): boolean;
|