@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
|
@@ -8,13 +8,13 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
8
8
|
* - Returns zero-padded string for most units.
|
|
9
9
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
10
10
|
* does; `"dayOfWeek"` has no plural.
|
|
11
|
-
* - `
|
|
12
|
-
*
|
|
11
|
+
* - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
|
|
12
|
+
* Temporal's GetOptionsObject rejects it.
|
|
13
13
|
* - Returns "" for invalid input.
|
|
14
14
|
*
|
|
15
15
|
* @param value ISO PlainDateTime string
|
|
16
16
|
* @param unit unit to extract from the datetime
|
|
17
|
-
* @param optionsArg
|
|
17
|
+
* @param optionsArg How weeks are numbered
|
|
18
18
|
* @returns string representation of the requested unit or "" on invalid input
|
|
19
19
|
*
|
|
20
20
|
* @example parseUnitFromDateTime("2024-03-15T14:30:45.123", "year") // "2024"
|
|
@@ -26,5 +26,13 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
26
26
|
* @example parseUnitFromDateTime("2024-01-01T00:00:00", "week", { weekStartsOn: "sunday" }) // "1"
|
|
27
27
|
*/
|
|
28
28
|
export declare function parseUnitFromDateTime(value: string, unit: Temporal.SmallestUnit<"year" | "month" | "day" | "week" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"> | "dayOfWeek", optionsArg?: {
|
|
29
|
+
/**
|
|
30
|
+
* The first day of the week, which sets how the `"week"` unit is numbered. `"monday"` gives the
|
|
31
|
+
* ISO 8601 week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS
|
|
32
|
+
* #35 week number with a Sunday first day and one minimal day, where week 1 holds 1 January.
|
|
33
|
+
* Any other value returns `""`, whatever the unit.
|
|
34
|
+
*
|
|
35
|
+
* @defaultValue `"monday"`
|
|
36
|
+
*/
|
|
29
37
|
weekStartsOn?: "monday" | "sunday";
|
|
30
38
|
}): string;
|
|
@@ -14,13 +14,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
14
14
|
* - Returns zero-padded string for most units.
|
|
15
15
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
16
16
|
* does; `"dayOfWeek"` has no plural.
|
|
17
|
-
* - `
|
|
18
|
-
*
|
|
17
|
+
* - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
|
|
18
|
+
* Temporal's GetOptionsObject rejects it.
|
|
19
19
|
* - Returns "" for invalid input.
|
|
20
20
|
*
|
|
21
21
|
* @param value ISO PlainDateTime string
|
|
22
22
|
* @param unit unit to extract from the datetime
|
|
23
|
-
* @param optionsArg
|
|
23
|
+
* @param optionsArg How weeks are numbered
|
|
24
24
|
* @returns string representation of the requested unit or "" on invalid input
|
|
25
25
|
*
|
|
26
26
|
* @example parseUnitFromDateTime("2024-03-15T14:30:45.123", "year") // "2024"
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the week number for a given ISO 8601 date string.
|
|
3
3
|
*
|
|
4
|
-
* -
|
|
5
|
-
* - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
|
|
6
|
-
* minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
|
|
7
|
-
* is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
|
|
8
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
4
|
+
* - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
|
|
9
5
|
* - Returns null for invalid input.
|
|
10
6
|
*
|
|
11
7
|
* @param value ISO date string
|
|
12
|
-
* @param optionsArg
|
|
8
|
+
* @param optionsArg How weeks are numbered
|
|
13
9
|
* @returns Week number (1-53) or null on invalid input
|
|
14
10
|
*
|
|
15
11
|
* @example parseWeekFromDate("2024-01-01") // 1
|
|
@@ -20,5 +16,13 @@
|
|
|
20
16
|
* @example parseWeekFromDate("2024-12-31", { weekStartsOn: "sunday" }) // 1 (its Sunday-first week holds 1 January 2025)
|
|
21
17
|
*/
|
|
22
18
|
export declare function parseWeekFromDate(value: string, optionsArg?: {
|
|
19
|
+
/**
|
|
20
|
+
* The first day of the week, which sets how the week is numbered. `"monday"` gives the ISO 8601
|
|
21
|
+
* week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS #35 week
|
|
22
|
+
* number with a Sunday first day and one minimal day, where week 1 holds 1 January. Any other
|
|
23
|
+
* value returns `null`.
|
|
24
|
+
*
|
|
25
|
+
* @defaultValue `"monday"`
|
|
26
|
+
*/
|
|
23
27
|
weekStartsOn?: "monday" | "sunday";
|
|
24
28
|
}): number | null;
|
|
@@ -5,15 +5,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
5
5
|
/**
|
|
6
6
|
* Return the week number for a given ISO 8601 date string.
|
|
7
7
|
*
|
|
8
|
-
* -
|
|
9
|
-
* - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
|
|
10
|
-
* minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
|
|
11
|
-
* is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
|
|
12
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
8
|
+
* - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
|
|
13
9
|
* - Returns null for invalid input.
|
|
14
10
|
*
|
|
15
11
|
* @param value ISO date string
|
|
16
|
-
* @param optionsArg
|
|
12
|
+
* @param optionsArg How weeks are numbered
|
|
17
13
|
* @returns Week number (1-53) or null on invalid input
|
|
18
14
|
*
|
|
19
15
|
* @example parseWeekFromDate("2024-01-01") // 1
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the week number for a given ISO 8601 datetime string.
|
|
3
3
|
*
|
|
4
|
-
* -
|
|
5
|
-
* - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
|
|
6
|
-
* minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
|
|
7
|
-
* is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
|
|
8
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
4
|
+
* - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
|
|
9
5
|
* - Returns null for invalid input.
|
|
10
6
|
*
|
|
11
7
|
* @param value ISO 8601 datetime string
|
|
12
|
-
* @param optionsArg
|
|
8
|
+
* @param optionsArg How weeks are numbered
|
|
13
9
|
* @returns Week number (1-53) or null on invalid input
|
|
14
10
|
*
|
|
15
11
|
* @example parseWeekFromDateTime("2024-01-01T12:00:00") // 1
|
|
@@ -19,5 +15,13 @@
|
|
|
19
15
|
* @example parseWeekFromDateTime("2024-12-31T12:00:00", { weekStartsOn: "sunday" }) // 1 (its Sunday-first week holds 1 January 2025)
|
|
20
16
|
*/
|
|
21
17
|
export declare function parseWeekFromDateTime(value: string, optionsArg?: {
|
|
18
|
+
/**
|
|
19
|
+
* The first day of the week, which sets how the week is numbered. `"monday"` gives the ISO 8601
|
|
20
|
+
* week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS #35 week
|
|
21
|
+
* number with a Sunday first day and one minimal day, where week 1 holds 1 January. Any other
|
|
22
|
+
* value returns `null`.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue `"monday"`
|
|
25
|
+
*/
|
|
22
26
|
weekStartsOn?: "monday" | "sunday";
|
|
23
27
|
}): number | null;
|
|
@@ -6,15 +6,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
6
6
|
/**
|
|
7
7
|
* Return the week number for a given ISO 8601 datetime string.
|
|
8
8
|
*
|
|
9
|
-
* -
|
|
10
|
-
* - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
|
|
11
|
-
* minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
|
|
12
|
-
* is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
|
|
13
|
-
* - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
|
|
9
|
+
* - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
|
|
14
10
|
* - Returns null for invalid input.
|
|
15
11
|
*
|
|
16
12
|
* @param value ISO 8601 datetime string
|
|
17
|
-
* @param optionsArg
|
|
13
|
+
* @param optionsArg How weeks are numbered
|
|
18
14
|
* @returns Week number (1-53) or null on invalid input
|
|
19
15
|
*
|
|
20
16
|
* @example parseWeekFromDateTime("2024-01-01T12:00:00") // 1
|
|
@@ -6,9 +6,27 @@
|
|
|
6
6
|
* const range: IsValidDateRangeProps = { value1: "2024-02-28", value2: "2024-02-29" };
|
|
7
7
|
*/
|
|
8
8
|
export interface IsValidDateRangeProps {
|
|
9
|
+
/**
|
|
10
|
+
* The start of the range, an ISO PlainDate string.
|
|
11
|
+
*/
|
|
9
12
|
value1: string;
|
|
13
|
+
/**
|
|
14
|
+
* The end of the range, an ISO PlainDate string.
|
|
15
|
+
*/
|
|
10
16
|
value2: string;
|
|
17
|
+
/**
|
|
18
|
+
* The settings for the comparison. It must be an object or omitted; any other value, `null`
|
|
19
|
+
* included, returns `false`.
|
|
20
|
+
*
|
|
21
|
+
* @defaultValue None. Equal values are not a valid range.
|
|
22
|
+
*/
|
|
11
23
|
options?: {
|
|
24
|
+
/**
|
|
25
|
+
* Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
|
|
26
|
+
* before `value2`.
|
|
27
|
+
*
|
|
28
|
+
* @defaultValue `false`
|
|
29
|
+
*/
|
|
12
30
|
allowEqual?: boolean;
|
|
13
31
|
};
|
|
14
32
|
}
|
|
@@ -18,11 +36,8 @@ export interface IsValidDateRangeProps {
|
|
|
18
36
|
* - Validates both dates with `isValidDate`, so each endpoint's RFC 9557 annotations are read as
|
|
19
37
|
* `Temporal.PlainDate.from` reads them (an elective `[foo=bar]` or `[u-ca=iso8601]` is ignored).
|
|
20
38
|
* - Rejects leap seconds in either date.
|
|
21
|
-
* - When `options.allowEqual` is true, equality is considered valid as well.
|
|
22
39
|
*
|
|
23
|
-
* @param
|
|
24
|
-
* @param value2 second ISO PlainDate string
|
|
25
|
-
* @param options optional allowEqual flag
|
|
40
|
+
* @param props The two values to compare and how equal values are treated
|
|
26
41
|
* @returns boolean indicating whether the date range is valid
|
|
27
42
|
*
|
|
28
43
|
* @example isValidDateRange({ value1: "2024-02-28", value2: "2024-02-29" }) // true
|
|
@@ -7,11 +7,8 @@ import { isObject, isOptionsArgument } from "../../internal/isObject.js";
|
|
|
7
7
|
* - Validates both dates with `isValidDate`, so each endpoint's RFC 9557 annotations are read as
|
|
8
8
|
* `Temporal.PlainDate.from` reads them (an elective `[foo=bar]` or `[u-ca=iso8601]` is ignored).
|
|
9
9
|
* - Rejects leap seconds in either date.
|
|
10
|
-
* - When `options.allowEqual` is true, equality is considered valid as well.
|
|
11
10
|
*
|
|
12
|
-
* @param
|
|
13
|
-
* @param value2 second ISO PlainDate string
|
|
14
|
-
* @param options optional allowEqual flag
|
|
11
|
+
* @param props The two values to compare and how equal values are treated
|
|
15
12
|
* @returns boolean indicating whether the date range is valid
|
|
16
13
|
*
|
|
17
14
|
* @example isValidDateRange({ value1: "2024-02-28", value2: "2024-02-29" }) // true
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return true if `value1` and `value2` form a valid datetime range — both parseable as
|
|
3
|
-
* ISO PlainDateTime strings and `value1
|
|
3
|
+
* ISO PlainDateTime strings and `value1` before `value2`.
|
|
4
4
|
*
|
|
5
5
|
* - Both inputs must be ISO 8601 datetime strings (e.g. `"2024-01-01T10:00:00"`), as
|
|
6
6
|
* `isValidDateTime` accepts, annotations included.
|
|
7
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
8
7
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
9
8
|
*
|
|
10
|
-
* @param
|
|
11
|
-
* @param value2 second ISO PlainDateTime string
|
|
12
|
-
* @param options optional allowEqual flag
|
|
9
|
+
* @param props The two values to compare and how equal values are treated
|
|
13
10
|
* @returns boolean indicating whether the datetime range is valid
|
|
14
11
|
*
|
|
15
12
|
* @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-12-31T23:59:59" }) // true
|
|
@@ -17,9 +14,27 @@
|
|
|
17
14
|
* @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-01-01T10:00:00", options: { allowEqual: true } }) // true
|
|
18
15
|
*/
|
|
19
16
|
export declare function isValidDateTimeRange(props: {
|
|
17
|
+
/**
|
|
18
|
+
* The start of the range, an ISO PlainDateTime string.
|
|
19
|
+
*/
|
|
20
20
|
value1: string;
|
|
21
|
+
/**
|
|
22
|
+
* The end of the range, an ISO PlainDateTime string.
|
|
23
|
+
*/
|
|
21
24
|
value2: string;
|
|
25
|
+
/**
|
|
26
|
+
* The settings for the comparison. It must be an object or omitted; any other value, `null`
|
|
27
|
+
* included, returns `false`.
|
|
28
|
+
*
|
|
29
|
+
* @defaultValue None. Equal values are not a valid range.
|
|
30
|
+
*/
|
|
22
31
|
options?: {
|
|
32
|
+
/**
|
|
33
|
+
* Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
|
|
34
|
+
* before `value2`.
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `false`
|
|
37
|
+
*/
|
|
23
38
|
allowEqual?: boolean;
|
|
24
39
|
};
|
|
25
40
|
}): boolean;
|
|
@@ -4,16 +4,13 @@ import { isValidDateTime } from "./isValidDateTime.js";
|
|
|
4
4
|
import { isObject, isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
6
6
|
* Return true if `value1` and `value2` form a valid datetime range — both parseable as
|
|
7
|
-
* ISO PlainDateTime strings and `value1
|
|
7
|
+
* ISO PlainDateTime strings and `value1` before `value2`.
|
|
8
8
|
*
|
|
9
9
|
* - Both inputs must be ISO 8601 datetime strings (e.g. `"2024-01-01T10:00:00"`), as
|
|
10
10
|
* `isValidDateTime` accepts, annotations included.
|
|
11
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
12
11
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
13
12
|
*
|
|
14
|
-
* @param
|
|
15
|
-
* @param value2 second ISO PlainDateTime string
|
|
16
|
-
* @param options optional allowEqual flag
|
|
13
|
+
* @param props The two values to compare and how equal values are treated
|
|
17
14
|
* @returns boolean indicating whether the datetime range is valid
|
|
18
15
|
*
|
|
19
16
|
* @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-12-31T23:59:59" }) // true
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return true if `value1` and `value2` form a valid time range — both parseable as
|
|
3
|
-
* ISO PlainTime strings and `value1
|
|
3
|
+
* ISO PlainTime strings and `value1` before `value2`.
|
|
4
4
|
*
|
|
5
5
|
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
|
|
6
6
|
* annotations included.
|
|
7
7
|
* - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
|
|
8
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
9
8
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
10
9
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @param value2 second ISO PlainTime string
|
|
13
|
-
* @param options optional allowEqual flag
|
|
10
|
+
* @param props The two values to compare and how equal values are treated
|
|
14
11
|
* @returns boolean indicating whether the time range is valid
|
|
15
12
|
*
|
|
16
13
|
* @example isValidTimeRange({ value1: "09:00:00", value2: "17:00:00" }) // true
|
|
@@ -18,9 +15,27 @@
|
|
|
18
15
|
* @example isValidTimeRange({ value1: "12:00:00", value2: "12:00:00", options: { allowEqual: true } }) // true
|
|
19
16
|
*/
|
|
20
17
|
export declare function isValidTimeRange(props: {
|
|
18
|
+
/**
|
|
19
|
+
* The start of the range, an ISO PlainTime string.
|
|
20
|
+
*/
|
|
21
21
|
value1: string;
|
|
22
|
+
/**
|
|
23
|
+
* The end of the range, an ISO PlainTime string.
|
|
24
|
+
*/
|
|
22
25
|
value2: string;
|
|
26
|
+
/**
|
|
27
|
+
* The settings for the comparison. It must be an object or omitted; any other value, `null`
|
|
28
|
+
* included, returns `false`.
|
|
29
|
+
*
|
|
30
|
+
* @defaultValue None. Equal values are not a valid range.
|
|
31
|
+
*/
|
|
23
32
|
options?: {
|
|
33
|
+
/**
|
|
34
|
+
* Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
|
|
35
|
+
* before `value2`.
|
|
36
|
+
*
|
|
37
|
+
* @defaultValue `false`
|
|
38
|
+
*/
|
|
24
39
|
allowEqual?: boolean;
|
|
25
40
|
};
|
|
26
41
|
}): boolean;
|
|
@@ -4,17 +4,14 @@ import { isValidTime } from "./isValidTime.js";
|
|
|
4
4
|
import { isObject, isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
6
6
|
* Return true if `value1` and `value2` form a valid time range — both parseable as
|
|
7
|
-
* ISO PlainTime strings and `value1
|
|
7
|
+
* ISO PlainTime strings and `value1` before `value2`.
|
|
8
8
|
*
|
|
9
9
|
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
|
|
10
10
|
* annotations included.
|
|
11
11
|
* - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
|
|
12
|
-
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
13
12
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
14
13
|
*
|
|
15
|
-
* @param
|
|
16
|
-
* @param value2 second ISO PlainTime string
|
|
17
|
-
* @param options optional allowEqual flag
|
|
14
|
+
* @param props The two values to compare and how equal values are treated
|
|
18
15
|
* @returns boolean indicating whether the time range is valid
|
|
19
16
|
*
|
|
20
17
|
* @example isValidTimeRange({ value1: "09:00:00", value2: "17:00:00" }) // true
|
|
@@ -7,9 +7,7 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
|
|
|
7
7
|
* that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
|
|
8
8
|
* compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
|
|
9
9
|
* 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
|
|
10
|
-
* -
|
|
11
|
-
* which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
|
|
12
|
-
* to the same instant as the 1900 serial exactly 1462 higher.
|
|
10
|
+
* - In the 1904 system serial 60 is a real 1904-03-01.
|
|
13
11
|
* - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
|
|
14
12
|
* 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
|
|
15
13
|
* Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
|
|
@@ -19,7 +17,7 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
|
|
|
19
17
|
* - Returns "" on invalid input.
|
|
20
18
|
*
|
|
21
19
|
* @param value Excel day serial (number, may carry a fractional time of day)
|
|
22
|
-
* @param options
|
|
20
|
+
* @param options Which Excel date system the serial is in
|
|
23
21
|
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
24
22
|
*
|
|
25
23
|
* @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
|
|
@@ -34,5 +32,13 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
|
|
|
34
32
|
* @example fromExcelSerial(-1) // ""
|
|
35
33
|
*/
|
|
36
34
|
export declare function fromExcelSerial(value: number, options?: {
|
|
35
|
+
/**
|
|
36
|
+
* Which Excel date system the serial is counted in. `"1900"` counts serial 1 as 1900-01-01
|
|
37
|
+
* and has the phantom serial 60; `"1904"` is the legacy Mac system, whose serial 0 is
|
|
38
|
+
* 1904-01-01 and which has no phantom day. The same instant is exactly 1462 lower in the 1904
|
|
39
|
+
* system.
|
|
40
|
+
*
|
|
41
|
+
* @defaultValue `"1900"`
|
|
42
|
+
*/
|
|
37
43
|
system?: ExcelDateSystem;
|
|
38
44
|
}): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, EXCEL_PHANTOM_SERIAL, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MILLISECONDS_PER_DAY, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_MILLISECOND, } from "../../internal/index.js";
|
|
2
2
|
import { fromNanoseconds } from "./fromNanoseconds.js";
|
|
3
3
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
4
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
4
5
|
/**
|
|
5
6
|
* Convert an Excel day serial back to an ISO 8601 instant string.
|
|
6
7
|
*
|
|
@@ -9,9 +10,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
9
10
|
* that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
|
|
10
11
|
* compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
|
|
11
12
|
* 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
|
|
12
|
-
* -
|
|
13
|
-
* which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
|
|
14
|
-
* to the same instant as the 1900 serial exactly 1462 higher.
|
|
13
|
+
* - In the 1904 system serial 60 is a real 1904-03-01.
|
|
15
14
|
* - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
|
|
16
15
|
* 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
|
|
17
16
|
* Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
|
|
@@ -21,7 +20,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
21
20
|
* - Returns "" on invalid input.
|
|
22
21
|
*
|
|
23
22
|
* @param value Excel day serial (number, may carry a fractional time of day)
|
|
24
|
-
* @param options
|
|
23
|
+
* @param options Which Excel date system the serial is in
|
|
25
24
|
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
26
25
|
*
|
|
27
26
|
* @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
|
|
@@ -40,7 +39,7 @@ export function fromExcelSerial(value, options) {
|
|
|
40
39
|
if (!isOptionsArgument(options)) {
|
|
41
40
|
return "";
|
|
42
41
|
}
|
|
43
|
-
const system = options?.system
|
|
42
|
+
const system = optionOrDefault(options?.system, "1900");
|
|
44
43
|
if (system !== "1900" && system !== "1904") {
|
|
45
44
|
return "";
|
|
46
45
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - Returns "" on invalid input.
|
|
16
16
|
*
|
|
17
17
|
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
18
|
-
* @param timeZone optional IANA
|
|
18
|
+
* @param timeZone optional IANA name or UTC offset; omitted or `undefined` is UTC
|
|
19
19
|
* @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
|
|
20
20
|
*
|
|
21
21
|
* @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
|
|
@@ -18,7 +18,7 @@ import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
|
18
18
|
* - Returns "" on invalid input.
|
|
19
19
|
*
|
|
20
20
|
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
21
|
-
* @param timeZone optional IANA
|
|
21
|
+
* @param timeZone optional IANA name or UTC offset; omitted or `undefined` is UTC
|
|
22
22
|
* @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
|
|
23
23
|
*
|
|
24
24
|
* @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
|
|
@@ -20,8 +20,6 @@ export type ExcelDateSystem = "1900" | "1904";
|
|
|
20
20
|
* compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
|
|
21
21
|
* Silently "fixing" this would put GMT one day out from Excel for every date before March
|
|
22
22
|
* 1900.
|
|
23
|
-
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
|
|
24
|
-
* same instant is exactly 1462 lower there than in the 1900 system.
|
|
25
23
|
* - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
|
|
26
24
|
* number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
|
|
27
25
|
* 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
|
|
@@ -38,7 +36,7 @@ export type ExcelDateSystem = "1900" | "1904";
|
|
|
38
36
|
* that Excel rejects on the way in.
|
|
39
37
|
*
|
|
40
38
|
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
41
|
-
* @param options
|
|
39
|
+
* @param options Which Excel date system the serial is in
|
|
42
40
|
* @returns Excel day serial as a number, or null on invalid input
|
|
43
41
|
*
|
|
44
42
|
* @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
|
|
@@ -52,5 +50,13 @@ export type ExcelDateSystem = "1900" | "1904";
|
|
|
52
50
|
* @example toExcelSerial("invalid") // null
|
|
53
51
|
*/
|
|
54
52
|
export declare function toExcelSerial(isoString: string, options?: {
|
|
53
|
+
/**
|
|
54
|
+
* Which Excel date system the serial is counted in. `"1900"` counts serial 1 as 1900-01-01
|
|
55
|
+
* and has the phantom serial 60; `"1904"` is the legacy Mac system, whose serial 0 is
|
|
56
|
+
* 1904-01-01 and which has no phantom day. The same instant is exactly 1462 lower in the 1904
|
|
57
|
+
* system.
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue `"1900"`
|
|
60
|
+
*/
|
|
55
61
|
system?: ExcelDateSystem;
|
|
56
62
|
}): number | null;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PHANTOM_END_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, floorDivide, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_DAY, NANOSECONDS_PER_DAY_NUMBER, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
2
2
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
3
4
|
/**
|
|
4
5
|
* Convert an ISO 8601 instant string to an Excel day serial.
|
|
5
6
|
*
|
|
@@ -11,8 +12,6 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
11
12
|
* compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
|
|
12
13
|
* Silently "fixing" this would put GMT one day out from Excel for every date before March
|
|
13
14
|
* 1900.
|
|
14
|
-
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
|
|
15
|
-
* same instant is exactly 1462 lower there than in the 1900 system.
|
|
16
15
|
* - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
|
|
17
16
|
* number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
|
|
18
17
|
* 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
|
|
@@ -29,7 +28,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
29
28
|
* that Excel rejects on the way in.
|
|
30
29
|
*
|
|
31
30
|
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
32
|
-
* @param options
|
|
31
|
+
* @param options Which Excel date system the serial is in
|
|
33
32
|
* @returns Excel day serial as a number, or null on invalid input
|
|
34
33
|
*
|
|
35
34
|
* @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
|
|
@@ -47,7 +46,7 @@ export function toExcelSerial(isoString, options) {
|
|
|
47
46
|
if (!isOptionsArgument(options)) {
|
|
48
47
|
return null;
|
|
49
48
|
}
|
|
50
|
-
const system = options?.system
|
|
49
|
+
const system = optionOrDefault(options?.system, "1900");
|
|
51
50
|
if (system !== "1900" && system !== "1904") {
|
|
52
51
|
return null;
|
|
53
52
|
}
|
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
|
|
5
5
|
* and offset-less strings are rejected.
|
|
6
|
-
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation
|
|
7
|
-
* ignored as `Temporal.Instant.from` ignores
|
|
8
|
-
* - **
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation. The
|
|
7
|
+
* calendar is ignored, as `Temporal.Instant.from` ignores it (an instant has no calendar).
|
|
8
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
9
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
10
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
11
|
+
* `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
|
|
12
|
+
* the instant it was written for, except a wall time repeated inside a sub-minute offset
|
|
13
|
+
* change, which reads as its first pass (see `isValidInstant`). Otherwise the bracket is not
|
|
14
|
+
* checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
|
|
11
15
|
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
12
16
|
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
13
17
|
* lower-case `z` and an hour-only time or offset return `0n`, although
|
|
@@ -29,7 +33,8 @@
|
|
|
29
33
|
* @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
|
|
30
34
|
* @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
|
|
31
35
|
* @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
|
|
32
|
-
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is
|
|
36
|
+
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is not checked
|
|
37
|
+
* @example toNanoseconds("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // -315615330000000000n — the zone's −00:44:30, which `-00:45` rounds
|
|
33
38
|
* @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
34
39
|
* @example toNanoseconds("20240310T120000Z") // 0n — basic format
|
|
35
40
|
* @example toNanoseconds("invalid") // 0n
|
|
@@ -4,11 +4,15 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
|
|
6
6
|
* and offset-less strings are rejected.
|
|
7
|
-
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation
|
|
8
|
-
* ignored as `Temporal.Instant.from` ignores
|
|
9
|
-
* - **
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation. The
|
|
8
|
+
* calendar is ignored, as `Temporal.Instant.from` ignores it (an instant has no calendar).
|
|
9
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
10
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
12
|
+
* `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
|
|
13
|
+
* the instant it was written for, except a wall time repeated inside a sub-minute offset
|
|
14
|
+
* change, which reads as its first pass (see `isValidInstant`). Otherwise the bracket is not
|
|
15
|
+
* checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
|
|
12
16
|
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
13
17
|
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
14
18
|
* lower-case `z` and an hour-only time or offset return `0n`, although
|
|
@@ -30,7 +34,8 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
|
|
|
30
34
|
* @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
|
|
31
35
|
* @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
|
|
32
36
|
* @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
|
|
33
|
-
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is
|
|
37
|
+
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is not checked
|
|
38
|
+
* @example toNanoseconds("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // -315615330000000000n — the zone's −00:44:30, which `-00:45` rounds
|
|
34
39
|
* @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
35
40
|
* @example toNanoseconds("20240310T120000Z") // 0n — basic format
|
|
36
41
|
* @example toNanoseconds("invalid") // 0n
|
|
@@ -9,9 +9,18 @@
|
|
|
9
9
|
*
|
|
10
10
|
* - Requires an offset designator (`Z`, `±HH:MM`); a bracketed IANA zone may follow, but a
|
|
11
11
|
* bracket alone is not enough.
|
|
12
|
-
* - **
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
13
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
14
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
15
|
+
* `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
|
|
16
|
+
* the instant it was written for, at the first and last instants of the range too, where the
|
|
17
|
+
* written offset's own reading can fall just outside it
|
|
18
|
+
* (`-271821-04-19T23:58:45-00:01[Europe/London]` is the first instant). One exception, which
|
|
19
|
+
* is Temporal's own: a wall time repeated inside a sub-minute offset change, written with a
|
|
20
|
+
* minute-rounded offset, reads as its first pass (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`,
|
|
21
|
+
* where the zone moved from −11:19:40 to −11:20:00, is the pass at −11:19:40). Otherwise the bracket is not checked: a
|
|
22
|
+
* zone that does not exist, or that disagrees with the offset, changes nothing. Validity never depends
|
|
23
|
+
* on the bracket.
|
|
15
24
|
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
16
25
|
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
17
26
|
* lower-case `z` and an hour-only time or offset return `false`, although
|
|
@@ -10,9 +10,18 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
|
|
|
10
10
|
*
|
|
11
11
|
* - Requires an offset designator (`Z`, `±HH:MM`); a bracketed IANA zone may follow, but a
|
|
12
12
|
* bracket alone is not enough.
|
|
13
|
-
* - **
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
14
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
15
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
16
|
+
* `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
|
|
17
|
+
* the instant it was written for, at the first and last instants of the range too, where the
|
|
18
|
+
* written offset's own reading can fall just outside it
|
|
19
|
+
* (`-271821-04-19T23:58:45-00:01[Europe/London]` is the first instant). One exception, which
|
|
20
|
+
* is Temporal's own: a wall time repeated inside a sub-minute offset change, written with a
|
|
21
|
+
* minute-rounded offset, reads as its first pass (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`,
|
|
22
|
+
* where the zone moved from −11:19:40 to −11:20:00, is the pass at −11:19:40). Otherwise the bracket is not checked: a
|
|
23
|
+
* zone that does not exist, or that disagrees with the offset, changes nothing. Validity never depends
|
|
24
|
+
* on the bracket.
|
|
16
25
|
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
17
26
|
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
18
27
|
* lower-case `z` and an hour-only time or offset return `false`, although
|