@northguild/gmt 1.17.0 → 1.19.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 +55 -2480
- package/dist/calendar/calculate/bucketRange.d.ts +12 -4
- package/dist/calendar/calculate/bucketRange.js +20 -63
- package/dist/calendar/calculate/floorToZone.d.ts +14 -4
- package/dist/calendar/calculate/floorToZone.js +18 -9
- 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 +59 -0
- package/dist/calendar/hours/addOperatingTime.js +65 -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 +45 -0
- package/dist/calendar/hours/isOpenAt.js +50 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +55 -0
- package/dist/calendar/hours/nextCloseAt.js +57 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +51 -0
- package/dist/calendar/hours/nextOpenAt.js +53 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +48 -0
- package/dist/calendar/hours/operatingIntervals.js +57 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +45 -0
- package/dist/calendar/hours/operatingTimeBetween.js +54 -0
- package/dist/calendar/hours/recurringWindows.d.ts +68 -0
- package/dist/calendar/hours/recurringWindows.js +88 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
- package/dist/duration/calculate/durationFromUnits.js +67 -0
- package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
- package/dist/duration/calculate/getDurationUnit.js +2 -2
- package/dist/duration/calculate/index.d.ts +3 -1
- package/dist/duration/calculate/index.js +3 -1
- package/dist/duration/calculate/negateDuration.d.ts +1 -1
- package/dist/duration/calculate/negateDuration.js +1 -1
- package/dist/duration/calculate/totalDuration.d.ts +73 -0
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +29 -27
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +13 -7
- package/dist/duration/compare/compareDurations.js +4 -7
- 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/duty/calculate/dutyDayFor.d.ts +38 -0
- package/dist/duty/calculate/dutyDayFor.js +71 -0
- package/dist/duty/calculate/dutyTotals.d.ts +24 -0
- package/dist/duty/calculate/dutyTotals.js +41 -0
- package/dist/duty/calculate/dutyViolations.d.ts +74 -0
- package/dist/duty/calculate/dutyViolations.js +65 -0
- package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
- package/dist/duty/calculate/evaluateDutyLog.js +75 -0
- package/dist/duty/calculate/index.d.ts +7 -0
- package/dist/duty/calculate/index.js +7 -0
- package/dist/duty/calculate/longestRun.d.ts +28 -0
- package/dist/duty/calculate/longestRun.js +54 -0
- package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
- package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
- package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
- package/dist/duty/calculate/qualifyingRests.js +49 -0
- package/dist/duty/index.d.ts +3 -0
- package/dist/duty/index.js +4 -0
- package/dist/duty/validate/index.d.ts +1 -0
- package/dist/duty/validate/index.js +1 -0
- package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
- package/dist/duty/validate/isValidDutyLog.js +34 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/instant/convert/classifyLocal.d.ts +5 -1
- package/dist/instant/convert/classifyLocal.js +16 -6
- package/dist/instant/convert/fromOffsetInstant.d.ts +7 -1
- package/dist/instant/convert/fromOffsetInstant.js +9 -2
- package/dist/instant/convert/resolveLocal.d.ts +18 -8
- package/dist/instant/convert/resolveLocal.js +21 -17
- package/dist/instant/convert/toOffsetInstant.d.ts +33 -16
- package/dist/instant/convert/toOffsetInstant.js +28 -13
- package/dist/instant/index.d.ts +1 -0
- package/dist/instant/index.js +1 -0
- package/dist/instant/validate/index.d.ts +1 -0
- package/dist/instant/validate/index.js +1 -0
- package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
- package/dist/instant/validate/isValidUtcOffset.js +35 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
- package/dist/intermodal/calculate/billingTimeline.js +2 -2
- package/dist/intermodal/calculate/chargeableDays.d.ts +19 -11
- package/dist/intermodal/calculate/chargeableDays.js +13 -10
- package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
- package/dist/intermodal/calculate/demurrageClock.js +7 -7
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +12 -4
- package/dist/intermodal/calculate/freeTimeExpiry.js +19 -8
- package/dist/intermodal/calculate/index.d.ts +1 -0
- package/dist/intermodal/calculate/index.js +1 -0
- package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
- package/dist/intermodal/calculate/multimodalETA.js +145 -0
- package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
- package/dist/intermodal/format/bolTimestamp.js +78 -0
- package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
- package/dist/intermodal/format/formatEdifactDate.js +42 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
- package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
- package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
- package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactTime.js +43 -0
- package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
- package/dist/intermodal/format/formatEpcisEvent.js +79 -0
- package/dist/intermodal/format/formatX12Date.d.ts +35 -0
- package/dist/intermodal/format/formatX12Date.js +43 -0
- package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
- package/dist/intermodal/format/formatX12DateRange.js +45 -0
- package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
- package/dist/intermodal/format/formatX12DateTime.js +47 -0
- package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
- package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
- package/dist/intermodal/format/formatX12Time.d.ts +42 -0
- package/dist/intermodal/format/formatX12Time.js +50 -0
- package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
- package/dist/intermodal/format/formatX12TimeElement.js +54 -0
- package/dist/intermodal/format/index.d.ts +14 -0
- package/dist/intermodal/format/index.js +14 -0
- package/dist/intermodal/index.d.ts +3 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
- package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
- package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
- package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
- package/dist/intermodal/parse/index.d.ts +18 -0
- package/dist/intermodal/parse/index.js +18 -0
- package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactDate.js +45 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
- package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactTime.js +45 -0
- package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
- package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
- package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
- package/dist/intermodal/parse/parseX12Date.js +47 -0
- package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
- package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
- package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
- package/dist/intermodal/parse/parseX12DateRange.js +52 -0
- package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
- package/dist/intermodal/parse/parseX12DateTime.js +53 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
- package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
- package/dist/intermodal/parse/parseX12Time.js +77 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
- package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
- package/dist/intermodal/validate/index.d.ts +18 -0
- package/dist/intermodal/validate/index.js +18 -0
- package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
- package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
- package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
- package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
- package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
- package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
- package/dist/intermodal/validate/isValidX12Date.js +30 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
- package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
- package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
- package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
- package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12Time.js +40 -0
- package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
- package/dist/internal/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +9 -10
- 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/dutyEngine.d.ts +125 -0
- package/dist/internal/dutyEngine.js +1746 -0
- package/dist/internal/dutyLog.d.ts +27 -0
- package/dist/internal/dutyLog.js +47 -0
- package/dist/internal/dutyPeriods.d.ts +135 -0
- package/dist/internal/dutyPeriods.js +369 -0
- package/dist/internal/dutyRules.d.ts +197 -0
- package/dist/internal/dutyRules.js +484 -0
- package/dist/internal/ediDateTimeFields.d.ts +97 -0
- package/dist/internal/ediDateTimeFields.js +288 -0
- package/dist/internal/ediDateTimeWriter.d.ts +92 -0
- package/dist/internal/ediDateTimeWriter.js +298 -0
- package/dist/internal/ediGrammar.d.ts +158 -0
- package/dist/internal/ediGrammar.js +384 -0
- package/dist/internal/englishCalendarNames.d.ts +3 -1
- package/dist/internal/englishCalendarNames.js +4 -3
- 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/freeTimeLedger.d.ts +5 -0
- package/dist/internal/freeTimeLedger.js +11 -2
- package/dist/internal/index.d.ts +12 -4
- package/dist/internal/index.js +16 -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/intervalNanoseconds.js +2 -1
- package/dist/internal/isObject.d.ts +13 -6
- package/dist/internal/isObject.js +14 -7
- package/dist/internal/isoYearString.d.ts +21 -0
- package/dist/internal/isoYearString.js +27 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/maxPieces.js +2 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +5 -2
- package/dist/internal/normalizeTimeZone.js +5 -2
- package/dist/internal/operatingSchedule.d.ts +138 -0
- package/dist/internal/operatingSchedule.js +756 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +12 -5
- package/dist/internal/patternToken.js +59 -25
- 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/readDurationUnits.d.ts +34 -0
- package/dist/internal/readDurationUnits.js +78 -0
- package/dist/internal/readSetFields.d.ts +50 -0
- package/dist/internal/readSetFields.js +179 -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/resolveUnixIntervalPair.d.ts +8 -2
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- package/dist/internal/startOrEndOfUnix.d.ts +2 -1
- package/dist/internal/startOrEndOfUnix.js +9 -6
- 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/twoDigitYear.d.ts +19 -0
- package/dist/internal/twoDigitYear.js +22 -0
- package/dist/internal/unixEpochValue.js +3 -2
- package/dist/internal/unixWallClock.d.ts +24 -0
- package/dist/internal/unixWallClock.js +35 -0
- package/dist/internal/utcWallClock.d.ts +20 -0
- package/dist/internal/utcWallClock.js +32 -0
- package/dist/internal/yearWindowStart.d.ts +28 -0
- package/dist/internal/yearWindowStart.js +52 -0
- package/dist/internal/zoneBucketCap.d.ts +18 -0
- package/dist/internal/zoneBucketCap.js +64 -0
- package/dist/internal/zoneFrame.d.ts +180 -0
- package/dist/internal/zoneFrame.js +221 -0
- package/dist/internal/zonedBucket.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- package/dist/internal/zonedNowUnitValue.d.ts +7 -4
- package/dist/internal/zonedNowUnitValue.js +8 -4
- 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/zonedWallClockDifference.js +4 -4
- package/dist/internal/zonedWallClockOperations.d.ts +31 -15
- package/dist/internal/zonedWallClockOperations.js +93 -43
- 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 +9 -15
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +5 -11
- package/dist/plain/calculate/addTime.js +4 -7
- 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 +9 -3
- 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 +27 -8
- package/dist/plain/calculate/setDate.js +28 -12
- package/dist/plain/calculate/setDateTime.d.ts +23 -8
- package/dist/plain/calculate/setDateTime.js +23 -12
- package/dist/plain/calculate/setTime.d.ts +23 -7
- package/dist/plain/calculate/setTime.js +25 -12
- 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 +9 -2
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +5 -11
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +5 -11
- package/dist/plain/calculate/subtractTime.js +4 -7
- 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 +23 -17
- 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 +28 -16
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +10 -6
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +23 -14
- package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
- package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
- package/dist/plain/format/formatTime.js +4 -2
- package/dist/plain/format/index.d.ts +1 -1
- package/dist/plain/format/index.js +1 -1
- package/dist/plain/get/getNowUnit.d.ts +2 -0
- package/dist/plain/get/getNowUnit.js +2 -0
- package/dist/plain/get/getYear.d.ts +2 -0
- package/dist/plain/get/getYear.js +4 -3
- 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/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.js +2 -2
- 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/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.js +2 -2
- 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/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +25 -9
- package/dist/plain/parse/parseDateTimeWithPattern.js +29 -11
- package/dist/plain/parse/parseDateWithPattern.d.ts +26 -9
- package/dist/plain/parse/parseDateWithPattern.js +30 -11
- package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
- package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +11 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDate.js +8 -4
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +8 -4
- 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/parse/parseYearFromDate.d.ts +5 -2
- package/dist/plain/parse/parseYearFromDate.js +7 -3
- package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
- package/dist/plain/parse/parseYearFromDateTime.js +6 -3
- package/dist/plain/validate/index.d.ts +1 -0
- package/dist/plain/validate/index.js +1 -0
- 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/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- 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 +9 -3
- package/dist/precision/convert/fromNanoseconds.js +9 -3
- 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/regex/epcis.d.ts +60 -0
- package/dist/regex/epcis.js +60 -0
- package/dist/regex/http-date.d.ts +6 -4
- package/dist/regex/http-date.js +6 -4
- package/dist/regex/index.d.ts +1 -0
- package/dist/regex/index.js +1 -0
- package/dist/regex/rfc-2822.d.ts +2 -0
- package/dist/regex/rfc-2822.js +2 -0
- package/dist/regex/rfc-3339.d.ts +3 -1
- package/dist/regex/rfc-3339.js +3 -1
- package/dist/regex/sql-date-time.d.ts +2 -1
- package/dist/regex/sql-date-time.js +2 -1
- package/dist/regex/time-zone-like.d.ts +3 -2
- package/dist/regex/time-zone-like.js +3 -2
- package/dist/regex/utc-offset.d.ts +2 -1
- package/dist/regex/utc-offset.js +2 -1
- 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 +63 -0
- package/dist/transport/calculate/crossingTime.js +81 -0
- package/dist/transport/calculate/cutoffAt.d.ts +95 -0
- package/dist/transport/calculate/cutoffAt.js +211 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +75 -0
- package/dist/transport/calculate/cutoffSchedule.js +73 -0
- package/dist/transport/calculate/dwellTime.d.ts +22 -8
- package/dist/transport/calculate/dwellTime.js +18 -9
- 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 +158 -0
- package/dist/transport/calculate/scheduleDelivery.js +305 -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 +13 -1
- package/dist/transport/convert/etaAtZone.js +15 -5
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/types/business-calendar.d.ts +20 -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/duty.d.ts +777 -0
- package/dist/types/edi.d.ts +407 -0
- package/dist/types/edi.js +0 -0
- package/dist/types/epcis.d.ts +25 -0
- package/dist/types/epcis.js +0 -0
- package/dist/types/exact-duration-unit.d.ts +8 -0
- package/dist/types/exact-duration-unit.js +0 -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 +22 -11
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.js +7 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +72 -0
- package/dist/types/operating-schedule.js +0 -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/types/two-digit-year.d.ts +23 -0
- package/dist/types/two-digit-year.js +0 -0
- package/dist/types/zone-bucket-unit.d.ts +1 -1
- package/dist/unix/calculate/addUnix.d.ts +28 -5
- package/dist/unix/calculate/addUnix.js +15 -16
- package/dist/unix/calculate/diffUnix.d.ts +21 -3
- package/dist/unix/calculate/diffUnix.js +12 -9
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +21 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +11 -8
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/endOfUnix.d.ts +29 -4
- package/dist/unix/calculate/endOfUnix.js +8 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +27 -4
- package/dist/unix/calculate/isBetweenUnix.js +7 -9
- package/dist/unix/calculate/roundUnix.d.ts +39 -3
- package/dist/unix/calculate/roundUnix.js +16 -12
- package/dist/unix/calculate/setUnix.d.ts +58 -12
- package/dist/unix/calculate/setUnix.js +37 -25
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/startOfUnix.d.ts +29 -4
- package/dist/unix/calculate/startOfUnix.js +8 -4
- package/dist/unix/calculate/subtractUnix.d.ts +27 -5
- package/dist/unix/calculate/subtractUnix.js +14 -16
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +33 -7
- package/dist/unix/compare/areUnixEqualBy.js +20 -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 +17 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +7 -8
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +7 -8
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +7 -8
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +14 -5
- package/dist/unix/convert/convertUnixToZoned.js +8 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +31 -19
- package/dist/unix/format/formatCalendarUnix.js +10 -6
- package/dist/unix/format/formatRelativeUnix.d.ts +62 -5
- package/dist/unix/format/formatRelativeUnix.js +16 -10
- package/dist/unix/format/formatUnix.d.ts +29 -6
- package/dist/unix/format/formatUnix.js +12 -7
- package/dist/unix/get/getUnixDay.d.ts +1 -3
- package/dist/unix/get/getUnixDay.js +5 -12
- package/dist/unix/get/getUnixHour.d.ts +1 -3
- package/dist/unix/get/getUnixHour.js +5 -12
- package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
- package/dist/unix/get/getUnixMicrosecond.js +4 -11
- package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
- package/dist/unix/get/getUnixMillisecond.js +5 -12
- package/dist/unix/get/getUnixMinute.d.ts +1 -3
- package/dist/unix/get/getUnixMinute.js +5 -12
- package/dist/unix/get/getUnixMonth.d.ts +1 -3
- package/dist/unix/get/getUnixMonth.js +5 -12
- package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
- package/dist/unix/get/getUnixNanosecond.js +4 -11
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
- package/dist/unix/get/getUnixNowUnit.js +2 -0
- package/dist/unix/get/getUnixSecond.d.ts +1 -3
- package/dist/unix/get/getUnixSecond.js +5 -12
- package/dist/unix/get/getUnixYear.d.ts +3 -3
- package/dist/unix/get/getUnixYear.js +5 -12
- package/dist/unix/interval/intervalCountUnix.d.ts +23 -5
- package/dist/unix/interval/intervalCountUnix.js +9 -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 +41 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +18 -12
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +24 -6
- package/dist/unix/interval/intervalLengthUnix.js +10 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +21 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +11 -8
- 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 +50 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +33 -22
- package/dist/unix/parse/parseDateFromUnix.d.ts +15 -2
- package/dist/unix/parse/parseDateFromUnix.js +4 -5
- package/dist/unix/parse/parseDayFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +15 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +3 -3
- package/dist/unix/parse/parseHourFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseTimeFromUnix.js +5 -5
- package/dist/unix/parse/parseUnitFromUnix.d.ts +29 -4
- package/dist/unix/parse/parseUnitFromUnix.js +23 -17
- package/dist/unix/parse/parseWeekFromUnix.d.ts +24 -7
- package/dist/unix/parse/parseWeekFromUnix.js +7 -11
- package/dist/unix/parse/parseYearFromUnix.d.ts +20 -3
- package/dist/unix/parse/parseYearFromUnix.js +6 -3
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +5 -11
- 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 +23 -7
- package/dist/utc/calculate/setUtc.js +23 -12
- 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 +5 -11
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +14 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +12 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +15 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -16
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +11 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +9 -9
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
- package/dist/utc/convert/convertUtcToZoned.js +5 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +23 -8
- package/dist/utc/format/formatCalendarUtc.js +14 -7
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +8 -8
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
- package/dist/utc/format/formatRelativeUtc.d.ts +38 -10
- package/dist/utc/format/formatRelativeUtc.js +22 -16
- package/dist/utc/format/formatUtc.d.ts +22 -15
- package/dist/utc/format/formatUtc.js +12 -8
- package/dist/utc/format/index.d.ts +1 -1
- package/dist/utc/format/index.js +1 -1
- package/dist/utc/get/getUtcDay.d.ts +1 -3
- package/dist/utc/get/getUtcDay.js +5 -12
- package/dist/utc/get/getUtcHour.d.ts +1 -3
- package/dist/utc/get/getUtcHour.js +5 -12
- package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
- package/dist/utc/get/getUtcMicrosecond.js +4 -11
- package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
- package/dist/utc/get/getUtcMillisecond.js +5 -12
- package/dist/utc/get/getUtcMinute.d.ts +1 -3
- package/dist/utc/get/getUtcMinute.js +5 -12
- package/dist/utc/get/getUtcMonth.d.ts +1 -3
- package/dist/utc/get/getUtcMonth.js +5 -12
- package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
- package/dist/utc/get/getUtcNanosecond.js +4 -11
- package/dist/utc/get/getUtcNow.d.ts +1 -3
- package/dist/utc/get/getUtcNow.js +2 -9
- package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
- package/dist/utc/get/getUtcNowUnit.js +2 -0
- package/dist/utc/get/getUtcSecond.d.ts +1 -3
- package/dist/utc/get/getUtcSecond.js +5 -12
- package/dist/utc/get/getUtcYear.d.ts +3 -3
- package/dist/utc/get/getUtcYear.js +5 -12
- 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/intervalXorAllUtc.js +2 -2
- package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDateFromUtc.js +3 -5
- package/dist/utc/parse/parseDayFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayFromUtc.js +3 -5
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +5 -7
- package/dist/utc/parse/parseHourFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseHourFromUtc.js +3 -5
- package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
- package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +3 -5
- package/dist/utc/parse/parseMonthFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMonthFromUtc.js +3 -5
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseSecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseSecondFromUtc.js +3 -5
- package/dist/utc/parse/parseTimeFromUtc.d.ts +11 -3
- package/dist/utc/parse/parseTimeFromUtc.js +7 -7
- package/dist/utc/parse/parseUnitFromUtc.d.ts +25 -6
- package/dist/utc/parse/parseUnitFromUtc.js +14 -10
- package/dist/utc/parse/parseWeekFromUtc.d.ts +20 -10
- package/dist/utc/parse/parseWeekFromUtc.js +8 -14
- package/dist/utc/parse/parseYearFromUtc.d.ts +13 -5
- package/dist/utc/parse/parseYearFromUtc.js +9 -8
- package/dist/utc/validate/index.d.ts +2 -0
- package/dist/utc/validate/index.js +2 -0
- package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
- package/dist/utc/validate/isValidHttpDate.js +38 -0
- package/dist/utc/validate/isValidUtc.d.ts +4 -0
- package/dist/utc/validate/isValidUtc.js +4 -0
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +10 -20
- 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 +44 -13
- package/dist/zoned/calculate/setZoned.js +30 -21
- 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 +10 -20
- 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 +21 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +9 -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 +5 -1
- package/dist/zoned/convert/convertZonedToZoned.js +5 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +15 -10
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +9 -5
- 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 +16 -3
- package/dist/zoned/format/formatTimeZoneName.js +9 -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 +11 -10
- package/dist/zoned/get/getDstTransitions.js +21 -7
- package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
- package/dist/zoned/get/getSystemTimeZone.js +5 -2
- package/dist/zoned/get/getTimeZoneOffset.d.ts +13 -2
- package/dist/zoned/get/getTimeZoneOffset.js +22 -6
- package/dist/zoned/get/getZonedDay.d.ts +2 -1
- package/dist/zoned/get/getZonedDay.js +6 -7
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
- package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
- package/dist/zoned/get/getZonedHour.d.ts +2 -1
- package/dist/zoned/get/getZonedHour.js +6 -7
- package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMicrosecond.js +6 -5
- package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMillisecond.js +6 -7
- package/dist/zoned/get/getZonedMinute.d.ts +2 -1
- package/dist/zoned/get/getZonedMinute.js +6 -7
- package/dist/zoned/get/getZonedMonth.d.ts +2 -1
- package/dist/zoned/get/getZonedMonth.js +6 -7
- package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedNanosecond.js +6 -5
- package/dist/zoned/get/getZonedNow.d.ts +18 -2
- package/dist/zoned/get/getZonedNow.js +17 -4
- package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
- package/dist/zoned/get/getZonedNowUnit.js +10 -7
- package/dist/zoned/get/getZonedSecond.d.ts +2 -1
- package/dist/zoned/get/getZonedSecond.js +6 -7
- package/dist/zoned/get/getZonedToday.d.ts +2 -1
- package/dist/zoned/get/getZonedToday.js +6 -5
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
- package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
- package/dist/zoned/get/getZonedYear.d.ts +4 -1
- package/dist/zoned/get/getZonedYear.js +9 -7
- 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/intervalXorAllZoned.js +2 -2
- package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
- 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 +13 -4
- package/dist/zoned/parse/parseUnitFromZoned.js +6 -4
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +45 -12
- package/dist/zoned/validate/hasDaylightSaving.js +54 -32
- package/dist/zoned/validate/index.d.ts +2 -0
- package/dist/zoned/validate/index.js +2 -0
- package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
- package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
- package/dist/zoned/validate/isValidTimeZone.d.ts +5 -1
- package/dist/zoned/validate/isValidTimeZone.js +6 -2
- 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 +67 -5
- package/skills/gmt-arithmetic/SKILL.md +99 -12
- package/skills/gmt-basics/SKILL.md +64 -13
- package/skills/gmt-integration/SKILL.md +33 -13
- package/skills/gmt-timezone/SKILL.md +265 -31
- package/dist/duration/calculate/durationAs.d.ts +0 -62
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -16
- package/dist/internal/utcZonedDateTime.js +0 -28
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → duty.js} +0 -0
|
@@ -11,9 +11,8 @@ const NANOSECONDS_PER_MINUTE = 60_000_000_000;
|
|
|
11
11
|
* `Temporal.ZonedDateTime.prototype.toString()` reproduces by default —
|
|
12
12
|
* that annotation is *not* valid RFC 3339. This function's only job is to
|
|
13
13
|
* strip it (`{ timeZoneName: "never" }`), which is exactly the detail a
|
|
14
|
-
* caller reaching for "give me RFC 3339" would otherwise miss. (
|
|
15
|
-
*
|
|
16
|
-
* parallel `utc`/`unix` wrapper was *not* added, because
|
|
14
|
+
* caller reaching for "give me RFC 3339" would otherwise miss. (This
|
|
15
|
+
* narrow gap is real; a parallel `utc`/`unix` wrapper was *not* added, because
|
|
17
16
|
* `Temporal.Instant.prototype.toString()` is already fully RFC 3339
|
|
18
17
|
* compliant with no bracket to strip — that would be a pure passthrough.)
|
|
19
18
|
* - **Sub-minute offsets are written in UTC.** `time-numoffset` holds whole minutes, and RFC 3339
|
|
@@ -18,7 +18,16 @@
|
|
|
18
18
|
* const s: TimeZoneNameStyle = "shortGeneric";
|
|
19
19
|
*/
|
|
20
20
|
export type TimeZoneNameStyle = "short" | "long" | "shortOffset" | "longOffset" | "shortGeneric" | "longGeneric";
|
|
21
|
+
/** Options for `formatTimeZoneName`: the form the zone name is written in. */
|
|
21
22
|
export interface FormatTimeZoneNameOptions {
|
|
23
|
+
/**
|
|
24
|
+
* The form of the name, one of `Intl.DateTimeFormat`'s `timeZoneName` values. `"short"` and
|
|
25
|
+
* `"long"` give the abbreviated or full name and `"shortOffset"` and `"longOffset"` the UTC
|
|
26
|
+
* offset, all four for the offset in effect now. `"shortGeneric"` and `"longGeneric"` give a name
|
|
27
|
+
* that does not change with daylight saving.
|
|
28
|
+
*
|
|
29
|
+
* @defaultValue `"long"`
|
|
30
|
+
*/
|
|
22
31
|
style?: TimeZoneNameStyle;
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
@@ -27,7 +36,7 @@ export interface FormatTimeZoneNameOptions {
|
|
|
27
36
|
* - `options.style` covers every `Intl.DateTimeFormatOptions` `timeZoneName`
|
|
28
37
|
* value: "short" (EST), "long" (Eastern Standard Time), "shortOffset"
|
|
29
38
|
* (GMT-5), "longOffset" (GMT-05:00), "shortGeneric" (ET), "longGeneric"
|
|
30
|
-
* (Eastern Time).
|
|
39
|
+
* (Eastern Time).
|
|
31
40
|
* - "short"/"long"/"shortOffset"/"longOffset" name the zone's *current*
|
|
32
41
|
* offset — for a DST-observing zone the label flips between standard and
|
|
33
42
|
* daylight names depending on when this is called, since there's no
|
|
@@ -38,10 +47,14 @@ export interface FormatTimeZoneNameOptions {
|
|
|
38
47
|
* issue — prefer them for a name that won't change twice a year.
|
|
39
48
|
* - Output depends on runtime ICU data.
|
|
40
49
|
* - Returns "" for an invalid timeZone or locale.
|
|
50
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
|
|
51
|
+
* identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
|
|
52
|
+
* `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
|
|
53
|
+
* Node, throw a RangeError exception"). Pass the IANA name.
|
|
41
54
|
*
|
|
42
|
-
* @param timeZone IANA
|
|
55
|
+
* @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
43
56
|
* @param locale BCP 47 locale tag (e.g. "en-US"), 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 ""
|
|
44
|
-
* @param options optional
|
|
57
|
+
* @param options optional setting for the form of the name
|
|
45
58
|
* @returns localized zone name, or "" on invalid input
|
|
46
59
|
*
|
|
47
60
|
* @example formatTimeZoneName("America/New_York", "en-US", { style: "shortGeneric" }) // "ET"
|
|
@@ -2,13 +2,14 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import { resolveRequiredLocale } from "../../internal/resolveLocale.js";
|
|
3
3
|
import { isValidTimeZone } from "../validate/index.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
5
6
|
/**
|
|
6
7
|
* Return the localized display name for an IANA timeZone.
|
|
7
8
|
*
|
|
8
9
|
* - `options.style` covers every `Intl.DateTimeFormatOptions` `timeZoneName`
|
|
9
10
|
* value: "short" (EST), "long" (Eastern Standard Time), "shortOffset"
|
|
10
11
|
* (GMT-5), "longOffset" (GMT-05:00), "shortGeneric" (ET), "longGeneric"
|
|
11
|
-
* (Eastern Time).
|
|
12
|
+
* (Eastern Time).
|
|
12
13
|
* - "short"/"long"/"shortOffset"/"longOffset" name the zone's *current*
|
|
13
14
|
* offset — for a DST-observing zone the label flips between standard and
|
|
14
15
|
* daylight names depending on when this is called, since there's no
|
|
@@ -19,10 +20,14 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
19
20
|
* issue — prefer them for a name that won't change twice a year.
|
|
20
21
|
* - Output depends on runtime ICU data.
|
|
21
22
|
* - Returns "" for an invalid timeZone or locale.
|
|
23
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
|
|
24
|
+
* identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
|
|
25
|
+
* `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
|
|
26
|
+
* Node, throw a RangeError exception"). Pass the IANA name.
|
|
22
27
|
*
|
|
23
|
-
* @param timeZone IANA
|
|
28
|
+
* @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
24
29
|
* @param locale BCP 47 locale tag (e.g. "en-US"), 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 ""
|
|
25
|
-
* @param options optional
|
|
30
|
+
* @param options optional setting for the form of the name
|
|
26
31
|
* @returns localized zone name, or "" on invalid input
|
|
27
32
|
*
|
|
28
33
|
* @example formatTimeZoneName("America/New_York", "en-US", { style: "shortGeneric" }) // "ET"
|
|
@@ -45,7 +50,7 @@ export function formatTimeZoneName(timeZone, locale, options) {
|
|
|
45
50
|
if (resolvedLocale === null)
|
|
46
51
|
return "";
|
|
47
52
|
try {
|
|
48
|
-
const style = options?.style
|
|
53
|
+
const style = optionOrDefault(options?.style, "long");
|
|
49
54
|
const formatter = new Intl.DateTimeFormat(resolvedLocale, {
|
|
50
55
|
timeZone,
|
|
51
56
|
timeZoneName: style,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { normalizeDateTime, zonedDateTimeFrom } from "../../internal/index.js";
|
|
2
2
|
import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
|
|
3
3
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
4
|
+
import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
|
|
4
5
|
/**
|
|
5
6
|
* Format a zoned ISO 8601 datetime string using the Intl.DateTimeFormat implementation.
|
|
6
7
|
*
|
|
@@ -51,7 +52,7 @@ export function formatZonedDateTime(value, locale, options) {
|
|
|
51
52
|
// (GetDateTimeFormat ~any~, ~zoned-date-time~, ~all~), so the requested
|
|
52
53
|
// fields and widths are kept.
|
|
53
54
|
const zonedDateTime = zonedDateTimeFrom(value);
|
|
54
|
-
const resolved = instantFormatOptions(options
|
|
55
|
+
const resolved = instantFormatOptions(readDateTimeFormatOptions(options), zonedDateTime.timeZoneId, "zoned-date-time");
|
|
55
56
|
if (resolved === null) {
|
|
56
57
|
return "";
|
|
57
58
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { normalizeDateTime, zonedDateTimeFrom } from "../../internal/index.js";
|
|
2
2
|
import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
|
|
3
3
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
4
|
+
import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
|
|
4
5
|
/**
|
|
5
6
|
* Format a zoned datetime range using the Temporal Intl.DateTimeFormat formatRange API.
|
|
6
7
|
*
|
|
@@ -61,7 +62,7 @@ export function formatZonedRange(from, to, locale, options) {
|
|
|
61
62
|
// an Instant format resolves to (GetDateTimeFormat ~any~, ~all~, ~all~), so
|
|
62
63
|
// the requested fields and widths are kept. A `timeZone` option is rejected
|
|
63
64
|
// rather than silently overridden.
|
|
64
|
-
const formatOptions = instantFormatOptions(options
|
|
65
|
+
const formatOptions = instantFormatOptions(readDateTimeFormatOptions(options), zdt1.timeZoneId, "all");
|
|
65
66
|
if (formatOptions === null) {
|
|
66
67
|
return "";
|
|
67
68
|
}
|
|
@@ -5,8 +5,7 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
|
|
|
5
5
|
* - This is GMT's substitute for a token formatter (Luxon `toFormat`, date-fns
|
|
6
6
|
* `format`). A token pattern hard-codes field order and ships US ordering to
|
|
7
7
|
* every locale; `formatToParts` gives the caller full control over presentation
|
|
8
|
-
* while the *locale* keeps control of order.
|
|
9
|
-
* `context/roadmap/issues/J.md`.
|
|
8
|
+
* while the *locale* keeps control of order.
|
|
10
9
|
* - Each part is `{ type, value }` where `type` can be:
|
|
11
10
|
* `"era"`, `"year"`, `"relatedYear"`, `"yearName"`, `"month"`, `"day"`, `"weekday"`,
|
|
12
11
|
* `"hour"`, `"minute"`, `"second"`, `"fractionalSecond"`, `"dayPeriod"`,
|
|
@@ -24,8 +23,11 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
|
|
|
24
23
|
* whitespace normalisation.
|
|
25
24
|
* - A ZonedDateTime is formatted in its own zone: a `timeZone` option returns
|
|
26
25
|
* `[]`, as `ZonedDateTime#toLocaleString` throws a TypeError for one.
|
|
27
|
-
* -
|
|
28
|
-
*
|
|
26
|
+
* - The literal before the day period depends on the runtime. CLDR 42 (ICU 72) put U+202F NARROW
|
|
27
|
+
* NO-BREAK SPACE there for `en-US`; Node 22 and 24 return it in the parts, and Node 26 returns
|
|
28
|
+
* an ordinary space (U+0020) instead. Both were checked on those runtimes. The examples show the
|
|
29
|
+
* Node 22 and 24 form, written as `"\u202f"` so the difference is visible. Treat the two
|
|
30
|
+
* characters as equal when you compare parts.
|
|
29
31
|
* - Returns `[]` for invalid input.
|
|
30
32
|
* - **Compatibility:** before 1.16.0 a call with no field options returned only the date parts, with
|
|
31
33
|
* no time zone name. Pass `{ year: "numeric", month: "numeric", day: "numeric" }` to keep that output.
|
|
@@ -48,6 +50,15 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
|
|
|
48
50
|
* @example formatZonedToParts("2024-02-03T14:30:00-05:00[America/New_York]", "en-US", null as never) // [] (null options, as ECMA-402 rejects them)
|
|
49
51
|
*/
|
|
50
52
|
export declare function formatZonedToParts(value: string, locale?: string | string[], options?: DateTimeFormatOptions): Array<{
|
|
53
|
+
/**
|
|
54
|
+
* The kind of part, named as ECMA-402 `Intl.DateTimeFormat.prototype.formatToParts` names it: a
|
|
55
|
+
* field such as `"year"`, `"month"` or `"day"`, or `"literal"` for the separator text between
|
|
56
|
+
* fields.
|
|
57
|
+
*/
|
|
51
58
|
type: string;
|
|
59
|
+
/**
|
|
60
|
+
* The text of the part in the requested locale, exactly as the formatter wrote it. Joining every
|
|
61
|
+
* `value` in array order gives the whole formatted text.
|
|
62
|
+
*/
|
|
52
63
|
value: string;
|
|
53
64
|
}>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
2
2
|
import { zonedDateTimeFrom } from "../../internal/index.js";
|
|
3
3
|
import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
|
|
4
|
+
import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
|
|
4
5
|
/**
|
|
5
6
|
* Return the locale-formatted parts of a ZonedDateTime.
|
|
6
7
|
*
|
|
7
8
|
* - This is GMT's substitute for a token formatter (Luxon `toFormat`, date-fns
|
|
8
9
|
* `format`). A token pattern hard-codes field order and ships US ordering to
|
|
9
10
|
* every locale; `formatToParts` gives the caller full control over presentation
|
|
10
|
-
* while the *locale* keeps control of order.
|
|
11
|
-
* `context/roadmap/issues/J.md`.
|
|
11
|
+
* while the *locale* keeps control of order.
|
|
12
12
|
* - Each part is `{ type, value }` where `type` can be:
|
|
13
13
|
* `"era"`, `"year"`, `"relatedYear"`, `"yearName"`, `"month"`, `"day"`, `"weekday"`,
|
|
14
14
|
* `"hour"`, `"minute"`, `"second"`, `"fractionalSecond"`, `"dayPeriod"`,
|
|
@@ -26,8 +26,11 @@ import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
|
|
|
26
26
|
* whitespace normalisation.
|
|
27
27
|
* - A ZonedDateTime is formatted in its own zone: a `timeZone` option returns
|
|
28
28
|
* `[]`, as `ZonedDateTime#toLocaleString` throws a TypeError for one.
|
|
29
|
-
* -
|
|
30
|
-
*
|
|
29
|
+
* - The literal before the day period depends on the runtime. CLDR 42 (ICU 72) put U+202F NARROW
|
|
30
|
+
* NO-BREAK SPACE there for `en-US`; Node 22 and 24 return it in the parts, and Node 26 returns
|
|
31
|
+
* an ordinary space (U+0020) instead. Both were checked on those runtimes. The examples show the
|
|
32
|
+
* Node 22 and 24 form, written as `"\u202f"` so the difference is visible. Treat the two
|
|
33
|
+
* characters as equal when you compare parts.
|
|
31
34
|
* - Returns `[]` for invalid input.
|
|
32
35
|
* - **Compatibility:** before 1.16.0 a call with no field options returned only the date parts, with
|
|
33
36
|
* no time zone name. Pass `{ year: "numeric", month: "numeric", day: "numeric" }` to keep that output.
|
|
@@ -63,7 +66,7 @@ export function formatZonedToParts(value, locale, options) {
|
|
|
63
66
|
// formatter's timeZone, with the options ZonedDateTime#toLocaleString
|
|
64
67
|
// resolves to (GetDateTimeFormat ~any~, ~zoned-date-time~, ~all~).
|
|
65
68
|
const zonedDateTime = zonedDateTimeFrom(value);
|
|
66
|
-
const resolved = instantFormatOptions(options
|
|
69
|
+
const resolved = instantFormatOptions(readDateTimeFormatOptions(options), zonedDateTime.timeZoneId, "zoned-date-time");
|
|
67
70
|
if (resolved === null) {
|
|
68
71
|
return [];
|
|
69
72
|
}
|
|
@@ -2,14 +2,6 @@
|
|
|
2
2
|
* A single DST transition instant: the UTC instant of an offset change plus the
|
|
3
3
|
* offset in effect immediately before and after it.
|
|
4
4
|
*
|
|
5
|
-
* @remarks Members:
|
|
6
|
-
*
|
|
7
|
-
* | Member | Type | Description |
|
|
8
|
-
* | --- | --- | --- |
|
|
9
|
-
* | `instant` | `string` | UTC instant of the offset change, ISO 8601 ending in `Z` (e.g. `2024-03-10T07:00:00Z`). |
|
|
10
|
-
* | `offsetBefore` | `string` | UTC offset in effect immediately before the transition (e.g. `-05:00`). |
|
|
11
|
-
* | `offsetAfter` | `string` | UTC offset in effect immediately after the transition (e.g. `-04:00`). |
|
|
12
|
-
*
|
|
13
5
|
* @example
|
|
14
6
|
* import { DstTransition } from "@northguild/gmt/zoned";
|
|
15
7
|
* const t: DstTransition = {
|
|
@@ -19,12 +11,16 @@
|
|
|
19
11
|
* };
|
|
20
12
|
*/
|
|
21
13
|
export interface DstTransition {
|
|
14
|
+
/** The UTC instant of the offset change, ISO 8601 ending in `Z` (e.g. `2024-03-10T07:00:00Z`). */
|
|
22
15
|
instant: string;
|
|
16
|
+
/** The UTC offset in effect immediately before the transition (e.g. `-05:00`). */
|
|
23
17
|
offsetBefore: string;
|
|
18
|
+
/** The UTC offset in effect immediately after the transition (e.g. `-04:00`). */
|
|
24
19
|
offsetAfter: string;
|
|
25
20
|
}
|
|
26
21
|
/**
|
|
27
|
-
* List every DST transition instant for an IANA
|
|
22
|
+
* List every DST transition instant for a time zone (an IANA name or a UTC offset) within a
|
|
23
|
+
* given year.
|
|
28
24
|
*
|
|
29
25
|
* - A "transition" is any UTC offset change: a spring-forward gap (nonexistent
|
|
30
26
|
* local time) or a fall-back overlap (ambiguous local time) — see
|
|
@@ -39,8 +35,11 @@ export interface DstTransition {
|
|
|
39
35
|
* - Returns `[]` for an invalid timeZone, a non-integer year, or a valid zone
|
|
40
36
|
* with zero transitions in that year (not an error case), and when the scan
|
|
41
37
|
* exhausts its internal bound — never a partial list.
|
|
38
|
+
* - A UTC offset, with or without seconds (`"+05:30"`, `"-00:44:30"`), never changes, so it has no
|
|
39
|
+
* transitions and returns `[]` for every year.
|
|
42
40
|
*
|
|
43
|
-
* @param timeZone IANA
|
|
41
|
+
* @param timeZone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or a
|
|
42
|
+
* stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
44
43
|
* @param year calendar year to scan (must be an integer)
|
|
45
44
|
* @returns array of `{ instant, offsetBefore, offsetAfter }`, in chronological order
|
|
46
45
|
*
|
|
@@ -52,6 +51,8 @@ export interface DstTransition {
|
|
|
52
51
|
* @example getDstTransitions("Asia/Singapore", 1982)
|
|
53
52
|
* // [{ instant: "1981-12-31T16:00:00Z", offsetBefore: "+07:30", offsetAfter: "+08:00" }]
|
|
54
53
|
* @example getDstTransitions("Asia/Tokyo", 2024) // []
|
|
54
|
+
* @example getDstTransitions("+05:30", 2024) // [] (a fixed offset has no transitions)
|
|
55
55
|
* @example getDstTransitions("Invalid/Zone", 2024) // []
|
|
56
|
+
* @example getDstTransitions("-00:44:30", 1970) // [] (a fixed offset)
|
|
56
57
|
*/
|
|
57
58
|
export declare function getDstTransitions(timeZone: string, year: number): DstTransition[];
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { zonedDateTimeFrom, zonedNextTransition, zonedStartOfDay, } from "../../internal/index.js";
|
|
1
|
+
import { zonedDateTimeFrom, zonedNextTransition, zonedStartOfDay, zoneFrame, } from "../../internal/index.js";
|
|
3
2
|
const MAX_TRANSITIONS_PER_YEAR = 20;
|
|
3
|
+
/** 368 days: a 366-day year plus a day at each end for the zone's offset. */
|
|
4
|
+
const SEARCH_SPAN_NANOSECONDS = 368n * 86400000000000n;
|
|
4
5
|
/**
|
|
5
|
-
* List every DST transition instant for an IANA
|
|
6
|
+
* List every DST transition instant for a time zone (an IANA name or a UTC offset) within a
|
|
7
|
+
* given year.
|
|
6
8
|
*
|
|
7
9
|
* - A "transition" is any UTC offset change: a spring-forward gap (nonexistent
|
|
8
10
|
* local time) or a fall-back overlap (ambiguous local time) — see
|
|
@@ -17,8 +19,11 @@ const MAX_TRANSITIONS_PER_YEAR = 20;
|
|
|
17
19
|
* - Returns `[]` for an invalid timeZone, a non-integer year, or a valid zone
|
|
18
20
|
* with zero transitions in that year (not an error case), and when the scan
|
|
19
21
|
* exhausts its internal bound — never a partial list.
|
|
22
|
+
* - A UTC offset, with or without seconds (`"+05:30"`, `"-00:44:30"`), never changes, so it has no
|
|
23
|
+
* transitions and returns `[]` for every year.
|
|
20
24
|
*
|
|
21
|
-
* @param timeZone IANA
|
|
25
|
+
* @param timeZone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or a
|
|
26
|
+
* stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
22
27
|
* @param year calendar year to scan (must be an integer)
|
|
23
28
|
* @returns array of `{ instant, offsetBefore, offsetAfter }`, in chronological order
|
|
24
29
|
*
|
|
@@ -30,21 +35,30 @@ const MAX_TRANSITIONS_PER_YEAR = 20;
|
|
|
30
35
|
* @example getDstTransitions("Asia/Singapore", 1982)
|
|
31
36
|
* // [{ instant: "1981-12-31T16:00:00Z", offsetBefore: "+07:30", offsetAfter: "+08:00" }]
|
|
32
37
|
* @example getDstTransitions("Asia/Tokyo", 2024) // []
|
|
38
|
+
* @example getDstTransitions("+05:30", 2024) // [] (a fixed offset has no transitions)
|
|
33
39
|
* @example getDstTransitions("Invalid/Zone", 2024) // []
|
|
40
|
+
* @example getDstTransitions("-00:44:30", 1970) // [] (a fixed offset)
|
|
34
41
|
*/
|
|
35
42
|
export function getDstTransitions(timeZone, year) {
|
|
36
|
-
|
|
43
|
+
const frame = zoneFrame(timeZone);
|
|
44
|
+
// A stored offset with seconds is a fixed offset: it has no transitions, as "-00:45" has none.
|
|
45
|
+
if (frame === null ||
|
|
46
|
+
frame.shiftNanoseconds !== 0n ||
|
|
47
|
+
!Number.isInteger(year)) {
|
|
37
48
|
return [];
|
|
38
49
|
}
|
|
39
50
|
try {
|
|
40
51
|
// getTimeZoneTransition("next") is strictly after its receiver, so start 1ns before the
|
|
41
52
|
// year opens to catch a transition landing exactly on local January 1 00:00.
|
|
42
|
-
let cur = zonedStartOfDay(zonedDateTimeFrom({ year, month: 1, day: 1, timeZone })).subtract({ nanoseconds: 1 });
|
|
53
|
+
let cur = zonedStartOfDay(zonedDateTimeFrom({ year, month: 1, day: 1, timeZone: frame.timeZone })).subtract({ nanoseconds: 1 });
|
|
54
|
+
// A calendar year is at most 366 days and an offset is under a day, so no search needs to
|
|
55
|
+
// read past this.
|
|
56
|
+
const searchEnd = cur.epochNanoseconds + SEARCH_SPAN_NANOSECONDS;
|
|
43
57
|
const transitions = [];
|
|
44
58
|
// `<=`: up to MAX in-year transitions are pushed, plus one more lookup to observe the scan
|
|
45
59
|
// leaving the year.
|
|
46
60
|
for (let i = 0; i <= MAX_TRANSITIONS_PER_YEAR; i++) {
|
|
47
|
-
const next = zonedNextTransition(cur);
|
|
61
|
+
const next = zonedNextTransition(cur, searchEnd);
|
|
48
62
|
if (!next || next.year > year) {
|
|
49
63
|
return transitions;
|
|
50
64
|
}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Return the runtime system timeZone name (for example "America/New_York").
|
|
3
3
|
*
|
|
4
4
|
* - Uses Intl.DateTimeFormat().resolvedOptions().timeZone to get system timezone.
|
|
5
|
-
* - Returns "" when
|
|
5
|
+
* - Returns "" when the host reports no usable time zone. With an empty `TZ` the runtime reports
|
|
6
|
+
* ICU's placeholder `"Etc/Unknown"`, and with an unrecognised `TZ` it reports `undefined`;
|
|
7
|
+
* neither is a zone that Temporal or `Intl.DateTimeFormat` accepts.
|
|
6
8
|
*
|
|
7
9
|
* @returns system timeZone name or "" on failure
|
|
8
10
|
*
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { isValidTimeZone } from "../validate/isValidTimeZone.js";
|
|
1
2
|
/**
|
|
2
3
|
* Return the runtime system timeZone name (for example "America/New_York").
|
|
3
4
|
*
|
|
4
5
|
* - Uses Intl.DateTimeFormat().resolvedOptions().timeZone to get system timezone.
|
|
5
|
-
* - Returns "" when
|
|
6
|
+
* - Returns "" when the host reports no usable time zone. With an empty `TZ` the runtime reports
|
|
7
|
+
* ICU's placeholder `"Etc/Unknown"`, and with an unrecognised `TZ` it reports `undefined`;
|
|
8
|
+
* neither is a zone that Temporal or `Intl.DateTimeFormat` accepts.
|
|
6
9
|
*
|
|
7
10
|
* @returns system timeZone name or "" on failure
|
|
8
11
|
*
|
|
@@ -11,7 +14,7 @@
|
|
|
11
14
|
export function getSystemTimeZone() {
|
|
12
15
|
try {
|
|
13
16
|
const systemTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
14
|
-
return systemTimeZone
|
|
17
|
+
return isValidTimeZone(systemTimeZone) ? systemTimeZone : "";
|
|
15
18
|
}
|
|
16
19
|
catch {
|
|
17
20
|
return "";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Return
|
|
2
|
+
* Return a time zone's UTC offset at a given instant.
|
|
3
3
|
*
|
|
4
4
|
* - Unlike `getZonedOffset`, this doesn't need an existing zoned value in
|
|
5
5
|
* hand — pass any timeZone identifier and an instant to look up, which is
|
|
@@ -14,14 +14,25 @@
|
|
|
14
14
|
* - The instant is ISO 8601 extended format before any annotation (`<date>T<time>`, then `Z` or
|
|
15
15
|
* `±HH:MM[:SS[.fraction]]`): basic format, a `t` or space separator, a lower-case `z` and an
|
|
16
16
|
* hour-only offset return "".
|
|
17
|
+
* - Only the instant is read from `instant`, as `isValidInstant` describes it: a bracketed zone
|
|
18
|
+
* in it is not validated, and an offset written to the minute that is that zone's sub-minute
|
|
19
|
+
* offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives.
|
|
20
|
+
* - The result is `±HH:MM`, or `±HH:MM:SS` where the zone was not on a whole minute
|
|
21
|
+
* (`Africa/Monrovia` stood at `-00:44:30` until 1972). It goes straight into the time zone
|
|
22
|
+
* position of any function whose result has no zone in it, and of this one: a UTC offset is its
|
|
23
|
+
* own answer at every instant, written without seconds when they are zero.
|
|
17
24
|
*
|
|
18
|
-
* @param timeZone IANA
|
|
25
|
+
* @param timeZone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or a
|
|
26
|
+
* stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
19
27
|
* @param instant ISO 8601 instant string (e.g. "2024-07-15T12:00:00Z")
|
|
20
28
|
* @returns offset string (e.g. "-04:00"), or "" on invalid input
|
|
21
29
|
*
|
|
22
30
|
* @example getTimeZoneOffset("America/New_York", "2024-07-15T12:00:00Z") // "-04:00"
|
|
23
31
|
* @example getTimeZoneOffset("America/New_York", "2024-01-15T12:00:00Z") // "-05:00"
|
|
24
32
|
* @example getTimeZoneOffset("Asia/Kathmandu", "2024-01-15T12:00:00Z") // "+05:45"
|
|
33
|
+
* @example getTimeZoneOffset("Africa/Monrovia", "1970-01-01T12:00:00Z") // "-00:44:30" (an offset with seconds)
|
|
34
|
+
* @example getTimeZoneOffset("-00:44:30", "1970-01-01T12:00:00Z") // "-00:44:30" (its own result, read back)
|
|
35
|
+
* @example getTimeZoneOffset("+05:30:00", "1970-01-01T12:00:00Z") // "+05:30"
|
|
25
36
|
* @example getTimeZoneOffset("Invalid/Zone", "2024-07-15T12:00:00Z") // ""
|
|
26
37
|
* @example getTimeZoneOffset("America/New_York", "not an instant") // ""
|
|
27
38
|
* @example getTimeZoneOffset("America/New_York", "2024-07-15T16:00:00z") // "" (lower-case z)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { instantFrom } from "../../internal/instantNanoseconds.js";
|
|
2
2
|
import { hasInstantShape } from "../../internal/isoStringBody.js";
|
|
3
3
|
import { instantLeapSecond } from "../../regex/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { frameOffset, zoneFrame } from "../../internal/zoneFrame.js";
|
|
5
5
|
/**
|
|
6
|
-
* Return
|
|
6
|
+
* Return a time zone's UTC offset at a given instant.
|
|
7
7
|
*
|
|
8
8
|
* - Unlike `getZonedOffset`, this doesn't need an existing zoned value in
|
|
9
9
|
* hand — pass any timeZone identifier and an instant to look up, which is
|
|
@@ -18,14 +18,25 @@ import { isValidTimeZone } from "../validate/index.js";
|
|
|
18
18
|
* - The instant is ISO 8601 extended format before any annotation (`<date>T<time>`, then `Z` or
|
|
19
19
|
* `±HH:MM[:SS[.fraction]]`): basic format, a `t` or space separator, a lower-case `z` and an
|
|
20
20
|
* hour-only offset return "".
|
|
21
|
+
* - Only the instant is read from `instant`, as `isValidInstant` describes it: a bracketed zone
|
|
22
|
+
* in it is not validated, and an offset written to the minute that is that zone's sub-minute
|
|
23
|
+
* offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives.
|
|
24
|
+
* - The result is `±HH:MM`, or `±HH:MM:SS` where the zone was not on a whole minute
|
|
25
|
+
* (`Africa/Monrovia` stood at `-00:44:30` until 1972). It goes straight into the time zone
|
|
26
|
+
* position of any function whose result has no zone in it, and of this one: a UTC offset is its
|
|
27
|
+
* own answer at every instant, written without seconds when they are zero.
|
|
21
28
|
*
|
|
22
|
-
* @param timeZone IANA
|
|
29
|
+
* @param timeZone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or a
|
|
30
|
+
* stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
23
31
|
* @param instant ISO 8601 instant string (e.g. "2024-07-15T12:00:00Z")
|
|
24
32
|
* @returns offset string (e.g. "-04:00"), or "" on invalid input
|
|
25
33
|
*
|
|
26
34
|
* @example getTimeZoneOffset("America/New_York", "2024-07-15T12:00:00Z") // "-04:00"
|
|
27
35
|
* @example getTimeZoneOffset("America/New_York", "2024-01-15T12:00:00Z") // "-05:00"
|
|
28
36
|
* @example getTimeZoneOffset("Asia/Kathmandu", "2024-01-15T12:00:00Z") // "+05:45"
|
|
37
|
+
* @example getTimeZoneOffset("Africa/Monrovia", "1970-01-01T12:00:00Z") // "-00:44:30" (an offset with seconds)
|
|
38
|
+
* @example getTimeZoneOffset("-00:44:30", "1970-01-01T12:00:00Z") // "-00:44:30" (its own result, read back)
|
|
39
|
+
* @example getTimeZoneOffset("+05:30:00", "1970-01-01T12:00:00Z") // "+05:30"
|
|
29
40
|
* @example getTimeZoneOffset("Invalid/Zone", "2024-07-15T12:00:00Z") // ""
|
|
30
41
|
* @example getTimeZoneOffset("America/New_York", "not an instant") // ""
|
|
31
42
|
* @example getTimeZoneOffset("America/New_York", "2024-07-15T16:00:00z") // "" (lower-case z)
|
|
@@ -36,13 +47,18 @@ export function getTimeZoneOffset(timeZone, instant) {
|
|
|
36
47
|
if (typeof instant !== "string") {
|
|
37
48
|
return "";
|
|
38
49
|
}
|
|
39
|
-
|
|
50
|
+
const frame = zoneFrame(timeZone);
|
|
51
|
+
if (frame === null ||
|
|
40
52
|
instantLeapSecond.test(instant) ||
|
|
41
53
|
!hasInstantShape(instant)) {
|
|
42
54
|
return "";
|
|
43
55
|
}
|
|
44
56
|
try {
|
|
45
|
-
|
|
57
|
+
const at = instantFrom(instant);
|
|
58
|
+
// A stored offset with seconds is its own answer at every valid instant.
|
|
59
|
+
return frame.shiftNanoseconds !== 0n
|
|
60
|
+
? frameOffset(frame)
|
|
61
|
+
: at.toZonedDateTimeISO(frame.timeZone).offset;
|
|
46
62
|
}
|
|
47
63
|
catch {
|
|
48
64
|
return "";
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
5
5
|
* - Validation is performed on the timezone.
|
|
6
6
|
*
|
|
7
|
-
* @param ianaTimezone IANA
|
|
7
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
8
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
8
9
|
* @returns current day string (zero-padded to 2 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedDay("America/New_York") // "28"
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isValidTimeZone } from "../validate/index.js";
|
|
1
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
3
2
|
/**
|
|
4
3
|
* Return the current day of month for the specified IANA timeZone.
|
|
5
4
|
*
|
|
6
5
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
7
6
|
* - Validation is performed on the timezone.
|
|
8
7
|
*
|
|
9
|
-
* @param ianaTimezone IANA
|
|
8
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
9
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
10
10
|
* @returns current day string (zero-padded to 2 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedDay("America/New_York") // "28"
|
|
13
13
|
* @example getZonedDay("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedDay(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.day.toString()
|
|
21
|
-
.padStart(2, "0");
|
|
20
|
+
return frameNowWallClock(frame).day.toString().padStart(2, "0");
|
|
22
21
|
}
|
|
23
22
|
catch {
|
|
24
23
|
return "";
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* - Returns 1-7 (Monday=1 through Sunday=7).
|
|
6
6
|
* - Validation is performed on the timezone.
|
|
7
7
|
*
|
|
8
|
-
* @param ianaTimezone IANA
|
|
8
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
9
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
9
10
|
* @returns current day of week number (1-7) or null on invalid input
|
|
10
11
|
*
|
|
11
12
|
* @example getZonedDayOfWeek("America/New_York") // 3
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isValidTimeZone } from "../validate/index.js";
|
|
1
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
3
2
|
/**
|
|
4
3
|
* Return the current day of week for the specified IANA timeZone.
|
|
5
4
|
*
|
|
@@ -7,17 +6,19 @@ import { isValidTimeZone } from "../validate/index.js";
|
|
|
7
6
|
* - Returns 1-7 (Monday=1 through Sunday=7).
|
|
8
7
|
* - Validation is performed on the timezone.
|
|
9
8
|
*
|
|
10
|
-
* @param ianaTimezone IANA
|
|
9
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
10
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
11
11
|
* @returns current day of week number (1-7) or null on invalid input
|
|
12
12
|
*
|
|
13
13
|
* @example getZonedDayOfWeek("America/New_York") // 3
|
|
14
14
|
* @example getZonedDayOfWeek("invalid") // null
|
|
15
15
|
*/
|
|
16
16
|
export function getZonedDayOfWeek(ianaTimezone) {
|
|
17
|
-
|
|
17
|
+
const frame = zoneFrame(ianaTimezone);
|
|
18
|
+
if (frame === null)
|
|
18
19
|
return null;
|
|
19
20
|
try {
|
|
20
|
-
const now =
|
|
21
|
+
const now = frameNowWallClock(frame);
|
|
21
22
|
return now.dayOfWeek;
|
|
22
23
|
}
|
|
23
24
|
catch {
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
5
5
|
* - Validation is performed on the timezone.
|
|
6
6
|
*
|
|
7
|
-
* @param ianaTimezone IANA
|
|
7
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
8
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
8
9
|
* @returns current hour string (zero-padded to 2 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedHour("America/New_York") // "19"
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isValidTimeZone } from "../validate/index.js";
|
|
1
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
3
2
|
/**
|
|
4
3
|
* Return the current hour for the specified IANA timeZone.
|
|
5
4
|
*
|
|
6
5
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
7
6
|
* - Validation is performed on the timezone.
|
|
8
7
|
*
|
|
9
|
-
* @param ianaTimezone IANA
|
|
8
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
9
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
10
10
|
* @returns current hour string (zero-padded to 2 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedHour("America/New_York") // "19"
|
|
13
13
|
* @example getZonedHour("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedHour(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.hour.toString()
|
|
21
|
-
.padStart(2, "0");
|
|
20
|
+
return frameNowWallClock(frame).hour.toString().padStart(2, "0");
|
|
22
21
|
}
|
|
23
22
|
catch {
|
|
24
23
|
return "";
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
5
5
|
* - Validation is performed on the timezone.
|
|
6
6
|
*
|
|
7
|
-
* @param ianaTimezone IANA
|
|
7
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
8
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
8
9
|
* @returns current microsecond string (zero-padded to 3 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedMicrosecond("America/New_York") // "000"
|