@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
|
@@ -16,13 +16,9 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
16
16
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
17
17
|
* - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
|
|
18
18
|
* days) moves the wall-clock date, then the time portion (hours and smaller) is added in exact
|
|
19
|
-
* time. `disambiguation`
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* and "earlier" take the earlier instant and "later" the later one; in a spring-forward
|
|
23
|
-
* (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
|
|
24
|
-
* "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
|
|
25
|
-
* result, so a time-only duration ignores it.
|
|
19
|
+
* time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
|
|
20
|
+
* portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
|
|
21
|
+
* exact-time result.
|
|
26
22
|
* - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
|
|
27
23
|
* forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
|
|
28
24
|
* fail. Pass "compatible" (or omit it) to keep the forward result.
|
|
@@ -33,13 +29,11 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
33
29
|
* - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
|
|
34
30
|
* a plain date-time, which has no UTC offset for it to act on (Temporal
|
|
35
31
|
* `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
|
|
36
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
37
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
38
32
|
* - Returns "" for invalid input.
|
|
39
33
|
*
|
|
40
34
|
* @param value ISO 8601 zoned datetime string, optionally calendar-annotated
|
|
41
35
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
42
|
-
* @param optionsArg optional
|
|
36
|
+
* @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
|
|
43
37
|
* @returns zoned ISO 8601 string on success, or "" on invalid input
|
|
44
38
|
*
|
|
45
39
|
* @example addZoned("2024-02-29T14:30:45.123-05:00[America/New_York]", { days: 1 }) // "2024-03-01T14:30:45.123-05:00[America/New_York]"
|
|
@@ -58,6 +52,22 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
|
|
|
58
52
|
* @example addZoned("2024-01-31T12:00:00-05:00[America/New_York]", { months: 1 }, { overflow: "reject" }) // ""
|
|
59
53
|
*/
|
|
60
54
|
export declare function addZoned(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, optionsArg?: {
|
|
55
|
+
/**
|
|
56
|
+
* How the intermediate wall-clock date-time, reached after the date portion of the duration is
|
|
57
|
+
* applied, resolves when it falls in a DST gap or overlap. In a fall-back overlap
|
|
58
|
+
* `"compatible"` and `"earlier"` take the earlier instant and `"later"` the later one; in a
|
|
59
|
+
* spring-forward gap `"compatible"` and `"later"` move the wall clock forward by the gap length
|
|
60
|
+
* and `"earlier"` back by it. `"reject"` returns `""` for both, and a time-only duration
|
|
61
|
+
* ignores the option.
|
|
62
|
+
*
|
|
63
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
64
|
+
*/
|
|
61
65
|
disambiguation?: Disambiguation;
|
|
66
|
+
/**
|
|
67
|
+
* What happens when the result names a day its month does not have, such as adding 1 month to
|
|
68
|
+
* 31 January. `"constrain"` clamps to the last valid day; `"reject"` returns `""`.
|
|
69
|
+
*
|
|
70
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
71
|
+
*/
|
|
62
72
|
overflow?: Overflow;
|
|
63
73
|
}): 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
|
* Add a temporal amount to a zoned ISO 8601 datetime string and return a zoned ISO 8601 string.
|
|
8
9
|
*
|
|
@@ -20,13 +21,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
20
21
|
* annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
|
|
21
22
|
* - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
|
|
22
23
|
* days) moves the wall-clock date, then the time portion (hours and smaller) is added in exact
|
|
23
|
-
* time. `disambiguation`
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* and "earlier" take the earlier instant and "later" the later one; in a spring-forward
|
|
27
|
-
* (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
|
|
28
|
-
* "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
|
|
29
|
-
* result, so a time-only duration ignores it.
|
|
24
|
+
* time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
|
|
25
|
+
* portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
|
|
26
|
+
* exact-time result.
|
|
30
27
|
* - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
|
|
31
28
|
* forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
|
|
32
29
|
* fail. Pass "compatible" (or omit it) to keep the forward result.
|
|
@@ -37,13 +34,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
37
34
|
* - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
|
|
38
35
|
* a plain date-time, which has no UTC offset for it to act on (Temporal
|
|
39
36
|
* `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
|
|
40
|
-
* - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
41
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
42
37
|
* - Returns "" for invalid input.
|
|
43
38
|
*
|
|
44
39
|
* @param value ISO 8601 zoned datetime string, optionally calendar-annotated
|
|
45
40
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
46
|
-
* @param optionsArg optional
|
|
41
|
+
* @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
|
|
47
42
|
* @returns zoned ISO 8601 string on success, or "" on invalid input
|
|
48
43
|
*
|
|
49
44
|
* @example addZoned("2024-02-29T14:30:45.123-05:00[America/New_York]", { days: 1 }) // "2024-03-01T14:30:45.123-05:00[America/New_York]"
|
|
@@ -75,9 +70,7 @@ export function addZoned(value, units, optionsArg) {
|
|
|
75
70
|
// TODO descriptive messages of what failed - likely could be GMT offset for historical changes and DST
|
|
76
71
|
return "";
|
|
77
72
|
}
|
|
78
|
-
const disambiguation = optionsArg?.disambiguation
|
|
79
|
-
? "compatible"
|
|
80
|
-
: optionsArg.disambiguation;
|
|
73
|
+
const disambiguation = optionOrDefault(optionsArg?.disambiguation, "compatible");
|
|
81
74
|
const overflow = resolveOverflow(optionsArg?.overflow);
|
|
82
75
|
try {
|
|
83
76
|
const calendar = calendarSystemOfZonedValue(value);
|
|
@@ -13,21 +13,14 @@ import type { DateTimeCycleField, Disambiguation, Offset, Overflow } from "../..
|
|
|
13
13
|
* whatever DST edge case results (the wrapped local time landing in a gap or an overlap) exactly
|
|
14
14
|
* the way it resolves any other field-set call. This is deliberately simpler than deriving
|
|
15
15
|
* DST-aware wrap boundaries directly.
|
|
16
|
-
* - `disambiguation` defaults to `"compatible"` and `offset` defaults to `"prefer"`, as Temporal's
|
|
17
|
-
* `ZonedDateTime#with` does: when the source's offset is still valid for the cycled wall time
|
|
18
|
-
* (a repeated fall-back hour), it is kept and `disambiguation` is not consulted. Pass
|
|
19
|
-
* `offset: "ignore"` to resolve the cycled wall time through `disambiguation` instead.
|
|
20
16
|
* - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
|
|
21
17
|
* to keep that resolution.
|
|
22
|
-
* - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
|
|
23
|
-
* (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
|
|
24
|
-
* docs for worked examples.
|
|
25
18
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
26
19
|
*
|
|
27
20
|
* @param value zoned ISO 8601 datetime string
|
|
28
21
|
* @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
29
22
|
* @param amount signed amount to cycle by
|
|
30
|
-
* @param options optional
|
|
23
|
+
* @param options optional settings for rounding the step and resolving the cycled wall-clock time
|
|
31
24
|
* @returns zoned ISO 8601 string with `field` cycled, or "" on invalid input
|
|
32
25
|
*
|
|
33
26
|
* @example cycleZoned("2024-06-15T09:30:00-05:00[America/Chicago]", "hour", 1) // "2024-06-15T10:30:00-05:00[America/Chicago]"
|
|
@@ -40,8 +33,40 @@ import type { DateTimeCycleField, Disambiguation, Offset, Overflow } from "../..
|
|
|
40
33
|
* @example cycleZoned("invalid", "hour", 1) // ""
|
|
41
34
|
*/
|
|
42
35
|
export declare function cycleZoned(value: string, field: DateTimeCycleField, amount: number, options?: {
|
|
36
|
+
/**
|
|
37
|
+
* Whether to step to the next multiple of `amount` in the direction of its sign (up for a
|
|
38
|
+
* positive amount, down for a negative one) instead of adding `amount` to the current value. It
|
|
39
|
+
* is the next multiple, not the nearest one; see `cycleDate` and `cycleTime` for worked examples.
|
|
40
|
+
*
|
|
41
|
+
* @defaultValue `false`
|
|
42
|
+
*/
|
|
43
43
|
round?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* What happens when the result names a day its month does not have, such as cycling `month`
|
|
46
|
+
* from 31 January to February. `"constrain"` clamps to the last valid day; `"reject"` returns
|
|
47
|
+
* `""`.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
50
|
+
*/
|
|
44
51
|
overflow?: Overflow;
|
|
52
|
+
/**
|
|
53
|
+
* How the new wall-clock time resolves when it falls in a DST gap or overlap and `offset` does
|
|
54
|
+
* not settle it. In a fall-back overlap `"compatible"` and `"earlier"` take the earlier instant
|
|
55
|
+
* and `"later"` the later one; in a spring-forward gap `"compatible"` and `"later"` move the
|
|
56
|
+
* wall clock forward by the gap length and `"earlier"` back by it. `"reject"` returns `""` for
|
|
57
|
+
* both.
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
60
|
+
*/
|
|
45
61
|
disambiguation?: Disambiguation;
|
|
62
|
+
/**
|
|
63
|
+
* How the source's UTC offset is treated at the new wall-clock time, as in Temporal's
|
|
64
|
+
* `ZonedDateTime#with`. `"prefer"` keeps it while it is still valid there (a repeated fall-back
|
|
65
|
+
* hour) and otherwise resolves through `disambiguation`; `"ignore"` always resolves through
|
|
66
|
+
* `disambiguation`. `"use"` keeps the offset even when that moves the wall clock, and
|
|
67
|
+
* `"reject"` returns `""` when the offset is not valid for the new wall time.
|
|
68
|
+
*
|
|
69
|
+
* @defaultValue `"prefer"`, Temporal's default.
|
|
70
|
+
*/
|
|
46
71
|
offset?: Offset;
|
|
47
72
|
}): string;
|
|
@@ -17,21 +17,14 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
17
17
|
* whatever DST edge case results (the wrapped local time landing in a gap or an overlap) exactly
|
|
18
18
|
* the way it resolves any other field-set call. This is deliberately simpler than deriving
|
|
19
19
|
* DST-aware wrap boundaries directly.
|
|
20
|
-
* - `disambiguation` defaults to `"compatible"` and `offset` defaults to `"prefer"`, as Temporal's
|
|
21
|
-
* `ZonedDateTime#with` does: when the source's offset is still valid for the cycled wall time
|
|
22
|
-
* (a repeated fall-back hour), it is kept and `disambiguation` is not consulted. Pass
|
|
23
|
-
* `offset: "ignore"` to resolve the cycled wall time through `disambiguation` instead.
|
|
24
20
|
* - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
|
|
25
21
|
* to keep that resolution.
|
|
26
|
-
* - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
|
|
27
|
-
* (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
|
|
28
|
-
* docs for worked examples.
|
|
29
22
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
30
23
|
*
|
|
31
24
|
* @param value zoned ISO 8601 datetime string
|
|
32
25
|
* @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
33
26
|
* @param amount signed amount to cycle by
|
|
34
|
-
* @param options optional
|
|
27
|
+
* @param options optional settings for rounding the step and resolving the cycled wall-clock time
|
|
35
28
|
* @returns zoned ISO 8601 string with `field` cycled, or "" on invalid input
|
|
36
29
|
*
|
|
37
30
|
* @example cycleZoned("2024-06-15T09:30:00-05:00[America/Chicago]", "hour", 1) // "2024-06-15T10:30:00-05:00[America/Chicago]"
|
|
@@ -43,7 +43,7 @@ import type { DateTimeDurationUnit, RoundingOptions } from "../../types/index.js
|
|
|
43
43
|
* @param value2 zoned ISO 8601 datetime string (end), optionally calendar-annotated
|
|
44
44
|
* @param units date-time unit or units to measure the difference, singular or plural (`"day"` or
|
|
45
45
|
* `"days"`); a record result keeps the plural keys
|
|
46
|
-
* @param options optional:
|
|
46
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
47
47
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
48
48
|
*
|
|
49
49
|
* @example diffZoned("2024-02-28T14:30:00+00:00[UTC]", "2024-03-01T15:30:00+00:00[UTC]", "days") // 2
|
|
@@ -48,7 +48,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
48
48
|
* @param value2 zoned ISO 8601 datetime string (end), optionally calendar-annotated
|
|
49
49
|
* @param units date-time unit or units to measure the difference, singular or plural (`"day"` or
|
|
50
50
|
* `"days"`); a record result keeps the plural keys
|
|
51
|
-
* @param options optional:
|
|
51
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
52
52
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
53
53
|
*
|
|
54
54
|
* @example diffZoned("2024-02-28T14:30:00+00:00[UTC]", "2024-03-01T15:30:00+00:00[UTC]", "days") // 2
|
|
@@ -32,7 +32,7 @@ import type { DateTimeDurationUnit, DurationStringOptions, RoundingOptions } fro
|
|
|
32
32
|
* @param value1 zoned ISO 8601 datetime string (start), optionally calendar-annotated
|
|
33
33
|
* @param value2 zoned ISO 8601 datetime string (end), optionally calendar-annotated
|
|
34
34
|
* @param unit date-time unit to use as the duration's largestUnit, singular or plural (`"day"` or `"days"`)
|
|
35
|
-
* @param options optional:
|
|
35
|
+
* @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
|
|
36
36
|
* @returns ISO 8601 duration string, or "" on invalid input
|
|
37
37
|
*
|
|
38
38
|
* @example diffZonedAsDuration("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-11T12:00:00-04:00[America/New_York]", "days") // "P2D" (wall-clock days; 47 elapsed hours)
|
|
@@ -35,7 +35,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
35
35
|
* @param value1 zoned ISO 8601 datetime string (start), optionally calendar-annotated
|
|
36
36
|
* @param value2 zoned ISO 8601 datetime string (end), optionally calendar-annotated
|
|
37
37
|
* @param unit date-time unit to use as the duration's largestUnit, singular or plural (`"day"` or `"days"`)
|
|
38
|
-
* @param options optional:
|
|
38
|
+
* @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
|
|
39
39
|
* @returns ISO 8601 duration string, or "" on invalid input
|
|
40
40
|
*
|
|
41
41
|
* @example diffZonedAsDuration("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-11T12:00:00-04:00[America/New_York]", "days") // "P2D" (wall-clock days; 47 elapsed hours)
|
|
@@ -4,13 +4,13 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - Calculates which quarter (1-4) the date falls into and returns the last moment of that quarter.
|
|
6
6
|
* - Returns one nanosecond before the next local quarter starts in `value`'s own zone (see `floorToZone`), so the result is never before `value`: a quarter whose last local hour repeats (`Africa/Cairo`, 2010-09-30) ends with the second pass.
|
|
7
|
-
* - The end is written at nanosecond precision by default, so the string names the end itself
|
|
7
|
+
* - The end is written at nanosecond precision by default, so the string names the end itself.
|
|
8
8
|
* - Validation is performed on the input.
|
|
9
9
|
* - **Compatibility:** before 1.16.0 the default printed no fractional digits, which wrote a moment
|
|
10
10
|
* earlier than the end. Pass `{ fractionalSecondDigits: 0 }` to keep the previous string.
|
|
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 end of the quarter, or "" on invalid input
|
|
15
15
|
*
|
|
16
16
|
* @example endOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-03-31T23:59:59.999999999+00:00[UTC]"
|
|
@@ -21,5 +21,12 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
21
21
|
* @example endOfQuarterForZoned("invalid") // ""
|
|
22
22
|
*/
|
|
23
23
|
export declare function endOfQuarterForZoned(value: string, optionsArg?: {
|
|
24
|
+
/**
|
|
25
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
26
|
+
* drop trailing zeros. Fewer than 9 digits truncate the string, as Temporal's `toString` does,
|
|
27
|
+
* so it names a moment before the end.
|
|
28
|
+
*
|
|
29
|
+
* @defaultValue `9`
|
|
30
|
+
*/
|
|
24
31
|
fractionalSecondDigits?: FractionalDigit;
|
|
25
32
|
}): string;
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { zonedDateTimeFrom, zonedUnitEnd } 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 end 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 last moment of that quarter.
|
|
8
9
|
* - Returns one nanosecond before the next local quarter starts in `value`'s own zone (see `floorToZone`), so the result is never before `value`: a quarter whose last local hour repeats (`Africa/Cairo`, 2010-09-30) ends with the second pass.
|
|
9
|
-
* - The end is written at nanosecond precision by default, so the string names the end itself
|
|
10
|
+
* - The end is written at nanosecond precision by default, so the string names the end itself.
|
|
10
11
|
* - Validation is performed on the input.
|
|
11
12
|
* - **Compatibility:** before 1.16.0 the default printed no fractional digits, which wrote a moment
|
|
12
13
|
* earlier than the end. Pass `{ fractionalSecondDigits: 0 }` to keep the previous string.
|
|
13
14
|
*
|
|
14
15
|
* @param value ISO ZonedDateTime string
|
|
15
|
-
* @param optionsArg optional
|
|
16
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
16
17
|
* @returns ISO ZonedDateTime string for the end of the quarter, or "" on invalid input
|
|
17
18
|
*
|
|
18
19
|
* @example endOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-03-31T23:59:59.999999999+00:00[UTC]"
|
|
@@ -32,9 +33,7 @@ export function endOfQuarterForZoned(value, optionsArg) {
|
|
|
32
33
|
}
|
|
33
34
|
// An end is next start − 1 ns, so it defaults to nanosecond precision: fewer digits would
|
|
34
35
|
// print an earlier instant than the end (Calendar & zone semantics §3).
|
|
35
|
-
const fractionalSecondDigits = optionsArg?.fractionalSecondDigits
|
|
36
|
-
? 9
|
|
37
|
-
: optionsArg.fractionalSecondDigits;
|
|
36
|
+
const fractionalSecondDigits = optionOrDefault(optionsArg?.fractionalSecondDigits, 9);
|
|
38
37
|
try {
|
|
39
38
|
const end = zonedUnitEnd(zonedDateTimeFrom(value), "quarter");
|
|
40
39
|
return end ? end.toString({ fractionalSecondDigits }) : "";
|
|
@@ -4,13 +4,12 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
|
|
|
4
4
|
* Return the end 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 last instant of the real local `unit` containing `value` in its own zone — one nanosecond before the next bucket `floorToZone` would return — so the result is never before `value`. The second pass of New York's repeated fall-back hour ends at 01:59:59.999999999 −05:00, and `Australia/Lord_Howe`'s 90-minute fall-back hour ends in its new offset.
|
|
9
8
|
* - A transition that reopens the previous local date makes that stretch its own bucket: `America/Goose_Bay`'s 00:01 fall-back on 7 November 2010 re-entered 6 November for 59 minutes, so the day holding `2010-11-06T23:30:00-04:00` ends at 23:59:59.999999999 −04:00.
|
|
10
9
|
* - A midnight repeated on the same date stays one day: `America/Havana`'s 25-hour 2024-11-03 ends at 23:59:59.999999999 −05:00 from either pass of its repeated first hour.
|
|
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
|
-
* - The end is written at nanosecond precision by default, so the string names the end itself
|
|
12
|
+
* - The end is written at nanosecond precision by default, so the string names the end itself.
|
|
14
13
|
* - Returns "" for invalid input.
|
|
15
14
|
* - **Compatibility:** before 1.16.0 the default printed only the digits the unit names — none for
|
|
16
15
|
* `second` and coarser, 3 for `millisecond`, 6 for `microsecond` — which wrote a moment earlier
|
|
@@ -18,7 +17,7 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
|
|
|
18
17
|
*
|
|
19
18
|
* @param value zoned ISO 8601 datetime string
|
|
20
19
|
* @param unit date or time unit, singular or plural, to specify the unit for the end
|
|
21
|
-
* @param
|
|
20
|
+
* @param optionsArg optional settings for the week's first day and the precision of the output string
|
|
22
21
|
* @returns zoned ISO 8601 string representing the end of the specified unit, or "" on invalid input
|
|
23
22
|
*
|
|
24
23
|
* @example endOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-29T23:59:59.999999999+00:00[UTC]"
|
|
@@ -30,6 +29,20 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
|
|
|
30
29
|
* @example endOfZoned("2024-11-03T00:30:00-04:00[America/Havana]", "day") // "2024-11-03T23:59:59.999999999-05:00[America/Havana]" (midnight repeated on the same date: one 25-hour day)
|
|
31
30
|
*/
|
|
32
31
|
export declare function endOfZoned(value: string, unit: Temporal.SmallestUnit<DateTimeUnit>, optionsArg?: {
|
|
32
|
+
/**
|
|
33
|
+
* The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
|
|
34
|
+
* 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
|
|
35
|
+
* `""`, whatever the unit.
|
|
36
|
+
*
|
|
37
|
+
* @defaultValue `"monday"`
|
|
38
|
+
*/
|
|
33
39
|
weekStartsOn?: "monday" | "sunday";
|
|
40
|
+
/**
|
|
41
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
42
|
+
* drop trailing zeros. Fewer than 9 digits truncate the string, as Temporal's `toString` does,
|
|
43
|
+
* so it names a moment before the end.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue `9`
|
|
46
|
+
*/
|
|
34
47
|
fractionalSecondDigits?: FractionalDigit;
|
|
35
48
|
}): string;
|
|
@@ -4,13 +4,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
4
4
|
* Return the end 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 last instant of the real local `unit` containing `value` in its own zone — one nanosecond before the next bucket `floorToZone` would return — so the result is never before `value`. The second pass of New York's repeated fall-back hour ends at 01:59:59.999999999 −05:00, and `Australia/Lord_Howe`'s 90-minute fall-back hour ends in its new offset.
|
|
9
8
|
* - A transition that reopens the previous local date makes that stretch its own bucket: `America/Goose_Bay`'s 00:01 fall-back on 7 November 2010 re-entered 6 November for 59 minutes, so the day holding `2010-11-06T23:30:00-04:00` ends at 23:59:59.999999999 −04:00.
|
|
10
9
|
* - A midnight repeated on the same date stays one day: `America/Havana`'s 25-hour 2024-11-03 ends at 23:59:59.999999999 −05:00 from either pass of its repeated first hour.
|
|
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
|
-
* - The end is written at nanosecond precision by default, so the string names the end itself
|
|
12
|
+
* - The end is written at nanosecond precision by default, so the string names the end itself.
|
|
14
13
|
* - Returns "" for invalid input.
|
|
15
14
|
* - **Compatibility:** before 1.16.0 the default printed only the digits the unit names — none for
|
|
16
15
|
* `second` and coarser, 3 for `millisecond`, 6 for `microsecond` — which wrote a moment earlier
|
|
@@ -18,7 +17,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
18
17
|
*
|
|
19
18
|
* @param value zoned ISO 8601 datetime string
|
|
20
19
|
* @param unit date or time unit, singular or plural, to specify the unit for the end
|
|
21
|
-
* @param
|
|
20
|
+
* @param optionsArg optional settings for the week's first day and the precision of the output string
|
|
22
21
|
* @returns zoned ISO 8601 string representing the end of the specified unit, or "" on invalid input
|
|
23
22
|
*
|
|
24
23
|
* @example endOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-29T23:59:59.999999999+00:00[UTC]"
|
|
@@ -11,8 +11,8 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
11
11
|
* its own zone — one nanosecond before the next week bucket starts — so
|
|
12
12
|
* the result is never before `value`.
|
|
13
13
|
* - The end is written at nanosecond precision by default (`.999999999`), like `endOfZoned`, so the
|
|
14
|
-
* string names the end itself.
|
|
15
|
-
*
|
|
14
|
+
* string names the end itself. Pass `{ fractionalSecondDigits: 0 }` to keep the previous
|
|
15
|
+
* whole-second string.
|
|
16
16
|
* - Distinct from `endOfZoned(value, "week", { weekStartsOn })`, which
|
|
17
17
|
* takes an explicit ISO-biased `weekStartsOn` option instead of deriving
|
|
18
18
|
* it from a locale.
|
|
@@ -23,7 +23,7 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
23
23
|
*
|
|
24
24
|
* @param value zoned ISO 8601 datetime string
|
|
25
25
|
* @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
|
|
26
|
-
* @param
|
|
26
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
27
27
|
* @returns zoned ISO 8601 string for the end of `value`'s locale-relative week, or "" on invalid input
|
|
28
28
|
*
|
|
29
29
|
* @example getLocaleZonedEndOfWeek("2024-02-29T12:00:00+00:00[UTC]", "en-US") // "2024-03-02T23:59:59.999999999+00:00[UTC]" (Saturday)
|
|
@@ -34,5 +34,12 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
34
34
|
* @example getLocaleZonedEndOfWeek("2024-05-15T12:00:00+02:00[Europe/Berlin]", ["fr-FR", "en-US"]) // "2024-05-19T23:59:59.999999999+02:00[Europe/Berlin]"
|
|
35
35
|
*/
|
|
36
36
|
export declare function getLocaleZonedEndOfWeek(value: string, locale: string | string[], optionsArg?: {
|
|
37
|
+
/**
|
|
38
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
39
|
+
* drop trailing zeros. Fewer than 9 digits truncate the string, as Temporal's `toString` does,
|
|
40
|
+
* so it names a moment before the end.
|
|
41
|
+
*
|
|
42
|
+
* @defaultValue `9`
|
|
43
|
+
*/
|
|
37
44
|
fractionalSecondDigits?: FractionalDigit;
|
|
38
45
|
}): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getLocaleFirstDayOfWeek, zonedDateTimeFrom, zonedUnitEnd, } 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 end of the week containing `value`, using `locale`'s first
|
|
6
7
|
* day of week (e.g. en-US: week ends Saturday, fr-FR: week ends Sunday).
|
|
@@ -13,8 +14,8 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
13
14
|
* its own zone — one nanosecond before the next week bucket starts — so
|
|
14
15
|
* the result is never before `value`.
|
|
15
16
|
* - The end is written at nanosecond precision by default (`.999999999`), like `endOfZoned`, so the
|
|
16
|
-
* string names the end itself.
|
|
17
|
-
*
|
|
17
|
+
* string names the end itself. Pass `{ fractionalSecondDigits: 0 }` to keep the previous
|
|
18
|
+
* whole-second string.
|
|
18
19
|
* - Distinct from `endOfZoned(value, "week", { weekStartsOn })`, which
|
|
19
20
|
* takes an explicit ISO-biased `weekStartsOn` option instead of deriving
|
|
20
21
|
* it from a locale.
|
|
@@ -25,7 +26,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
25
26
|
*
|
|
26
27
|
* @param value zoned ISO 8601 datetime string
|
|
27
28
|
* @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
|
|
28
|
-
* @param
|
|
29
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
29
30
|
* @returns zoned ISO 8601 string for the end of `value`'s locale-relative week, or "" on invalid input
|
|
30
31
|
*
|
|
31
32
|
* @example getLocaleZonedEndOfWeek("2024-02-29T12:00:00+00:00[UTC]", "en-US") // "2024-03-02T23:59:59.999999999+00:00[UTC]" (Saturday)
|
|
@@ -40,9 +41,7 @@ export function getLocaleZonedEndOfWeek(value, locale, optionsArg) {
|
|
|
40
41
|
if (!isOptionsArgument(optionsArg)) {
|
|
41
42
|
return "";
|
|
42
43
|
}
|
|
43
|
-
const fractionalSecondDigits = optionsArg?.fractionalSecondDigits
|
|
44
|
-
? 9
|
|
45
|
-
: optionsArg.fractionalSecondDigits;
|
|
44
|
+
const fractionalSecondDigits = optionOrDefault(optionsArg?.fractionalSecondDigits, 9);
|
|
46
45
|
if (!isValidZonedDateTime(value))
|
|
47
46
|
return "";
|
|
48
47
|
const firstDay = getLocaleFirstDayOfWeek(locale);
|
|
@@ -21,7 +21,7 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
21
21
|
*
|
|
22
22
|
* @param value zoned ISO 8601 datetime string
|
|
23
23
|
* @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
|
|
24
|
-
* @param
|
|
24
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
25
25
|
* @returns zoned ISO 8601 string for the start of `value`'s locale-relative week, or "" on invalid input
|
|
26
26
|
*
|
|
27
27
|
* @example getLocaleZonedStartOfWeek("2024-02-29T12:00:00+00:00[UTC]", "en-US") // "2024-02-25T00:00:00+00:00[UTC]" (Sunday)
|
|
@@ -32,5 +32,11 @@ import type { FractionalDigit } from "../../types/index.js";
|
|
|
32
32
|
* @example getLocaleZonedStartOfWeek("2024-05-15T12:00:00+02:00[Europe/Berlin]", ["en-US", "fr-FR"]) // "2024-05-12T00:00:00+02:00[Europe/Berlin]"
|
|
33
33
|
*/
|
|
34
34
|
export declare function getLocaleZonedStartOfWeek(value: string, locale: string | string[], optionsArg?: {
|
|
35
|
+
/**
|
|
36
|
+
* The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
|
|
37
|
+
* drop trailing zeros. A start has no sub-second part, so any digits written are zeros.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue `0`
|
|
40
|
+
*/
|
|
35
41
|
fractionalSecondDigits?: FractionalDigit;
|
|
36
42
|
}): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getLocaleFirstDayOfWeek, 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 week containing `value`, using `locale`'s
|
|
6
7
|
* first day of week (e.g. en-US: Sunday, fr-FR: Monday).
|
|
@@ -23,7 +24,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
23
24
|
*
|
|
24
25
|
* @param value zoned ISO 8601 datetime string
|
|
25
26
|
* @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
|
|
26
|
-
* @param
|
|
27
|
+
* @param optionsArg optional setting for the precision of the output string
|
|
27
28
|
* @returns zoned ISO 8601 string for the start of `value`'s locale-relative week, or "" on invalid input
|
|
28
29
|
*
|
|
29
30
|
* @example getLocaleZonedStartOfWeek("2024-02-29T12:00:00+00:00[UTC]", "en-US") // "2024-02-25T00:00:00+00:00[UTC]" (Sunday)
|
|
@@ -38,9 +39,7 @@ export function getLocaleZonedStartOfWeek(value, locale, optionsArg) {
|
|
|
38
39
|
if (!isOptionsArgument(optionsArg)) {
|
|
39
40
|
return "";
|
|
40
41
|
}
|
|
41
|
-
const fractionalSecondDigits = optionsArg?.fractionalSecondDigits
|
|
42
|
-
? 0
|
|
43
|
-
: optionsArg.fractionalSecondDigits;
|
|
42
|
+
const fractionalSecondDigits = optionOrDefault(optionsArg?.fractionalSecondDigits, 0);
|
|
44
43
|
if (!isValidZonedDateTime(value))
|
|
45
44
|
return "";
|
|
46
45
|
const firstDay = getLocaleFirstDayOfWeek(locale);
|
|
@@ -3,9 +3,6 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
3
3
|
* Round an ISO 8601 zoned datetime string to the specified unit.
|
|
4
4
|
*
|
|
5
5
|
* - Returns "" for invalid inputs.
|
|
6
|
-
* - Accepts "day" and time units: "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
|
|
7
|
-
* - Each unit is accepted in its singular or plural form ("day" or "days"), as Temporal's
|
|
8
|
-
* GetTemporalUnitValuedOption accepts both.
|
|
9
6
|
* - Date units ("year", "month", "week") return "". This is the Temporal spec, not a polyfill
|
|
10
7
|
* limitation: `ZonedDateTime.prototype.round` accepts time units and "day" only
|
|
11
8
|
* (ValidateTemporalUnitValue with ~time~ and « day »).
|
|
@@ -20,7 +17,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
20
17
|
* minutes later. Use `floorToZone` for a boundary that never exceeds the instant.
|
|
21
18
|
*
|
|
22
19
|
* @param value ISO 8601 zoned datetime string
|
|
23
|
-
* @param options
|
|
20
|
+
* @param options the unit to round to, with an optional increment and rounding mode
|
|
24
21
|
* @returns Rounded ISO 8601 zoned datetime string, or "" on invalid input
|
|
25
22
|
*
|
|
26
23
|
* @example roundZoned("2024-06-15T12:34:56-04:00[America/New_York]", { smallestUnit: "hour" }) // "2024-06-15T13:00:00-04:00[America/New_York]"
|
|
@@ -31,7 +28,27 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
31
28
|
* @example roundZoned("invalid", { smallestUnit: "hour" }) // ""
|
|
32
29
|
*/
|
|
33
30
|
export declare function roundZoned(value: string, options: {
|
|
31
|
+
/**
|
|
32
|
+
* The unit to round to: `"day"` or a time unit from `"hour"` to `"nanosecond"`, in its singular
|
|
33
|
+
* or plural form, as Temporal's GetTemporalUnitValuedOption accepts both. It also sets how many
|
|
34
|
+
* fractional-second digits the result is written with.
|
|
35
|
+
*/
|
|
34
36
|
smallestUnit: Temporal.SmallestUnit<"day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond">;
|
|
37
|
+
/**
|
|
38
|
+
* The size of the step, in `smallestUnit`s, that the value is rounded to a multiple of, such as
|
|
39
|
+
* `15` for quarter hours. It must divide evenly into the next larger unit and be smaller than it,
|
|
40
|
+
* and must be `1` for `"day"`; any other value returns `""`. A non-integer is truncated first,
|
|
41
|
+
* as Temporal does.
|
|
42
|
+
*
|
|
43
|
+
* @defaultValue `1`, Temporal's default.
|
|
44
|
+
*/
|
|
35
45
|
roundingIncrement?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Which way a value between two multiples goes. `"halfExpand"` picks the nearest multiple and
|
|
48
|
+
* sends a tie up; `"floor"` and `"trunc"` always go down, `"ceil"` and `"expand"` always up. The
|
|
49
|
+
* other `half` modes differ from `"halfExpand"` only in how a tie breaks.
|
|
50
|
+
*
|
|
51
|
+
* @defaultValue `"halfExpand"`, Temporal's default.
|
|
52
|
+
*/
|
|
36
53
|
roundingMode?: Temporal.RoundingMode;
|
|
37
54
|
}): string;
|
|
@@ -18,9 +18,6 @@ function isZonedRoundingUnit(unit) {
|
|
|
18
18
|
* Round an ISO 8601 zoned datetime string to the specified unit.
|
|
19
19
|
*
|
|
20
20
|
* - Returns "" for invalid inputs.
|
|
21
|
-
* - Accepts "day" and time units: "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
|
|
22
|
-
* - Each unit is accepted in its singular or plural form ("day" or "days"), as Temporal's
|
|
23
|
-
* GetTemporalUnitValuedOption accepts both.
|
|
24
21
|
* - Date units ("year", "month", "week") return "". This is the Temporal spec, not a polyfill
|
|
25
22
|
* limitation: `ZonedDateTime.prototype.round` accepts time units and "day" only
|
|
26
23
|
* (ValidateTemporalUnitValue with ~time~ and « day »).
|
|
@@ -35,7 +32,7 @@ function isZonedRoundingUnit(unit) {
|
|
|
35
32
|
* minutes later. Use `floorToZone` for a boundary that never exceeds the instant.
|
|
36
33
|
*
|
|
37
34
|
* @param value ISO 8601 zoned datetime string
|
|
38
|
-
* @param options
|
|
35
|
+
* @param options the unit to round to, with an optional increment and rounding mode
|
|
39
36
|
* @returns Rounded ISO 8601 zoned datetime string, or "" on invalid input
|
|
40
37
|
*
|
|
41
38
|
* @example roundZoned("2024-06-15T12:34:56-04:00[America/New_York]", { smallestUnit: "hour" }) // "2024-06-15T13:00:00-04:00[America/New_York]"
|
|
@@ -50,9 +47,8 @@ export function roundZoned(value, options) {
|
|
|
50
47
|
if (!isObject(options))
|
|
51
48
|
return "";
|
|
52
49
|
const { roundingIncrement, roundingMode } = options;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
: options.smallestUnit;
|
|
50
|
+
// One read (GetOption): resolveDateTimeUnit returns a value that is not a string unchanged.
|
|
51
|
+
const smallestUnit = resolveDateTimeUnit(options.smallestUnit);
|
|
56
52
|
if (!isValidZonedDateTime(value))
|
|
57
53
|
return "";
|
|
58
54
|
// Temporal ZonedDateTime.prototype.round: ValidateTemporalUnitValue(smallestUnit, ~time~, « day »)
|