@northguild/gmt 1.18.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 -2920
- package/dist/calendar/calculate/bucketRange.d.ts +10 -2
- package/dist/calendar/calculate/bucketRange.js +18 -61
- package/dist/calendar/calculate/floorToZone.d.ts +10 -2
- package/dist/calendar/calculate/floorToZone.js +15 -7
- package/dist/calendar/hours/addOperatingTime.d.ts +6 -0
- package/dist/calendar/hours/addOperatingTime.js +7 -1
- package/dist/calendar/hours/isOpenAt.d.ts +6 -0
- package/dist/calendar/hours/isOpenAt.js +6 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +6 -0
- package/dist/calendar/hours/nextCloseAt.js +7 -1
- package/dist/calendar/hours/nextOpenAt.d.ts +6 -0
- package/dist/calendar/hours/nextOpenAt.js +7 -1
- package/dist/calendar/hours/operatingIntervals.d.ts +5 -0
- package/dist/calendar/hours/operatingIntervals.js +5 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +5 -0
- package/dist/calendar/hours/operatingTimeBetween.js +5 -0
- package/dist/calendar/hours/recurringWindows.d.ts +8 -1
- package/dist/calendar/hours/recurringWindows.js +12 -4
- 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/{durationAs.d.ts → totalDuration.d.ts} +25 -19
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +25 -19
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +1 -1
- package/dist/duration/compare/compareDurations.js +1 -1
- 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 +4 -0
- package/dist/instant/convert/fromOffsetInstant.js +6 -1
- package/dist/instant/convert/resolveLocal.d.ts +7 -2
- package/dist/instant/convert/resolveLocal.js +16 -8
- package/dist/instant/convert/toOffsetInstant.d.ts +12 -8
- package/dist/instant/convert/toOffsetInstant.js +19 -11
- 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/chargeableDays.d.ts +6 -0
- package/dist/intermodal/calculate/chargeableDays.js +12 -4
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +7 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +15 -4
- 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.js +4 -9
- 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 +3 -1
- package/dist/internal/freeTimeLedger.d.ts +5 -0
- package/dist/internal/freeTimeLedger.js +11 -2
- package/dist/internal/index.d.ts +5 -2
- package/dist/internal/index.js +9 -2
- 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/maxPieces.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +4 -1
- package/dist/internal/normalizeTimeZone.js +4 -1
- package/dist/internal/operatingSchedule.d.ts +13 -4
- package/dist/internal/operatingSchedule.js +146 -58
- package/dist/internal/patternToken.d.ts +10 -3
- package/dist/internal/patternToken.js +31 -12
- 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/resolveRelativeUnit.d.ts +1 -1
- package/dist/internal/resolveRelativeUnit.js +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/startOrEndOfUnix.d.ts +2 -1
- package/dist/internal/startOrEndOfUnix.js +9 -6
- 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/zonedNowUnitValue.d.ts +7 -4
- package/dist/internal/zonedNowUnitValue.js +8 -4
- package/dist/internal/zonedWallClockDifference.js +4 -4
- package/dist/internal/zonedWallClockOperations.d.ts +5 -2
- package/dist/internal/zonedWallClockOperations.js +7 -10
- package/dist/plain/calculate/addDate.js +4 -7
- package/dist/plain/calculate/addDateTime.js +4 -7
- package/dist/plain/calculate/addTime.js +4 -7
- package/dist/plain/calculate/endOfTime.d.ts +1 -1
- package/dist/plain/calculate/setDate.d.ts +20 -3
- package/dist/plain/calculate/setDate.js +27 -7
- package/dist/plain/calculate/setDateTime.d.ts +15 -3
- package/dist/plain/calculate/setDateTime.js +22 -7
- package/dist/plain/calculate/setTime.d.ts +13 -1
- package/dist/plain/calculate/setTime.js +21 -6
- package/dist/plain/calculate/startOfTime.d.ts +1 -1
- package/dist/plain/calculate/subtractDate.js +4 -7
- package/dist/plain/calculate/subtractDateTime.js +4 -7
- package/dist/plain/calculate/subtractTime.js +4 -7
- package/dist/plain/format/formatCalendar.js +2 -1
- package/dist/plain/format/formatRelativeDate.js +2 -1
- package/dist/plain/format/formatRelativeDateTime.js +2 -1
- package/dist/plain/format/formatRelativeTime.js +2 -1
- 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/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/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
- package/dist/plain/interval/intervalXorAllTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsTime.js +2 -2
- package/dist/plain/parse/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +16 -3
- package/dist/plain/parse/parseDateTimeWithPattern.js +20 -5
- package/dist/plain/parse/parseDateWithPattern.d.ts +17 -3
- package/dist/plain/parse/parseDateWithPattern.js +21 -5
- 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.js +1 -0
- package/dist/plain/parse/parseUnitFromDate.d.ts +3 -0
- package/dist/plain/parse/parseUnitFromDate.js +5 -1
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +3 -0
- package/dist/plain/parse/parseUnitFromDateTime.js +5 -1
- 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/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
- package/dist/precision/convert/fromNanoseconds.js +9 -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/transport/calculate/crossingTime.d.ts +6 -1
- package/dist/transport/calculate/crossingTime.js +6 -1
- package/dist/transport/calculate/cutoffAt.d.ts +6 -1
- package/dist/transport/calculate/cutoffAt.js +2 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +6 -1
- package/dist/transport/calculate/cutoffSchedule.js +2 -0
- package/dist/transport/calculate/dwellTime.d.ts +6 -1
- package/dist/transport/calculate/dwellTime.js +6 -1
- package/dist/transport/calculate/scheduleDelivery.d.ts +13 -5
- package/dist/transport/calculate/scheduleDelivery.js +6 -1
- package/dist/transport/convert/etaAtZone.d.ts +6 -1
- package/dist/transport/convert/etaAtZone.js +6 -1
- package/dist/types/business-calendar.d.ts +5 -4
- package/dist/types/duty.d.ts +777 -0
- package/dist/types/duty.js +0 -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/free-time-options.d.ts +4 -3
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/operating-schedule.d.ts +3 -2
- 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 +11 -2
- package/dist/unix/calculate/addUnix.js +14 -11
- package/dist/unix/calculate/diffUnix.d.ts +10 -2
- package/dist/unix/calculate/diffUnix.js +11 -6
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +10 -2
- package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/endOfUnix.d.ts +11 -2
- package/dist/unix/calculate/endOfUnix.js +7 -0
- package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
- package/dist/unix/calculate/isBetweenUnix.js +3 -3
- package/dist/unix/calculate/roundUnix.d.ts +10 -2
- package/dist/unix/calculate/roundUnix.js +13 -6
- package/dist/unix/calculate/setUnix.d.ts +25 -5
- package/dist/unix/calculate/setUnix.js +33 -12
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/startOfUnix.d.ts +11 -2
- package/dist/unix/calculate/startOfUnix.js +7 -0
- package/dist/unix/calculate/subtractUnix.d.ts +10 -2
- package/dist/unix/calculate/subtractUnix.js +13 -11
- package/dist/unix/compare/areUnixEqualBy.d.ts +11 -2
- package/dist/unix/compare/areUnixEqualBy.js +7 -0
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainTime.js +5 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +5 -1
- package/dist/unix/convert/convertUnixToZoned.js +5 -1
- package/dist/unix/format/formatCalendarUnix.d.ts +6 -2
- package/dist/unix/format/formatCalendarUnix.js +6 -1
- package/dist/unix/format/formatRelativeUnix.d.ts +11 -3
- package/dist/unix/format/formatRelativeUnix.js +13 -5
- package/dist/unix/format/formatUnix.d.ts +7 -2
- package/dist/unix/format/formatUnix.js +4 -0
- 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/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 +11 -2
- package/dist/unix/interval/intervalCountUnix.js +7 -0
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
- package/dist/unix/interval/intervalFromDurationUnix.js +12 -7
- package/dist/unix/interval/intervalLengthUnix.d.ts +10 -2
- package/dist/unix/interval/intervalLengthUnix.js +6 -0
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +10 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.js +12 -6
- package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDateFromUnix.js +3 -3
- package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
- package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
- package/dist/unix/parse/parseTimeFromUnix.js +4 -3
- package/dist/unix/parse/parseUnitFromUnix.d.ts +9 -3
- package/dist/unix/parse/parseUnitFromUnix.js +21 -14
- package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
- package/dist/unix/parse/parseWeekFromUnix.js +4 -4
- package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
- package/dist/unix/parse/parseYearFromUnix.js +4 -1
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.js +4 -7
- package/dist/utc/calculate/setUtc.d.ts +16 -3
- package/dist/utc/calculate/setUtc.js +22 -8
- package/dist/utc/calculate/subtractUtc.js +4 -7
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -2
- package/dist/utc/convert/convertUtcToPlainDate.js +10 -7
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +9 -2
- package/dist/utc/convert/convertUtcToPlainDateTime.js +12 -13
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +5 -2
- package/dist/utc/convert/convertUtcToPlainTime.js +7 -6
- package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
- package/dist/utc/convert/convertUtcToZoned.js +5 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +6 -2
- package/dist/utc/format/formatCalendarUtc.js +6 -1
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +7 -7
- package/dist/utc/format/formatRelativeUtc.d.ts +11 -3
- package/dist/utc/format/formatRelativeUtc.js +13 -5
- package/dist/utc/format/formatUtc.d.ts +7 -2
- package/dist/utc/format/formatUtc.js +4 -0
- 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/intervalXorAllUtc.js +2 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDateFromUtc.js +2 -2
- package/dist/utc/parse/parseDayFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDayFromUtc.js +2 -2
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -4
- package/dist/utc/parse/parseHourFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseHourFromUtc.js +2 -2
- 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 +4 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +2 -2
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMillisecondFromUtc.js +2 -2
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
- package/dist/utc/parse/parseMonthFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMonthFromUtc.js +2 -2
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +2 -2
- package/dist/utc/parse/parseSecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseSecondFromUtc.js +2 -2
- package/dist/utc/parse/parseTimeFromUtc.d.ts +5 -2
- package/dist/utc/parse/parseTimeFromUtc.js +5 -4
- package/dist/utc/parse/parseUnitFromUtc.d.ts +10 -3
- package/dist/utc/parse/parseUnitFromUtc.js +11 -5
- package/dist/utc/parse/parseWeekFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseWeekFromUtc.js +4 -4
- package/dist/utc/parse/parseYearFromUtc.d.ts +8 -4
- package/dist/utc/parse/parseYearFromUtc.js +8 -5
- 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/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/zoned/calculate/addZoned.js +4 -7
- package/dist/zoned/calculate/setZoned.d.ts +19 -5
- package/dist/zoned/calculate/setZoned.js +26 -9
- package/dist/zoned/calculate/subtractZoned.js +4 -7
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +4 -1
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +4 -1
- package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
- package/dist/zoned/convert/convertZonedToZoned.js +5 -1
- package/dist/zoned/format/formatCalendarZoned.js +2 -1
- package/dist/zoned/format/formatRelativeZoned.js +2 -1
- package/dist/zoned/format/formatTimeZoneName.d.ts +5 -1
- package/dist/zoned/format/formatTimeZoneName.js +5 -1
- package/dist/zoned/get/getDstTransitions.d.ts +5 -3
- package/dist/zoned/get/getDstTransitions.js +12 -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 +10 -2
- package/dist/zoned/get/getTimeZoneOffset.js +18 -5
- 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 +5 -1
- package/dist/zoned/get/getZonedNow.js +5 -1
- 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/intervalXorAllZoned.js +2 -2
- package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +4 -1
- package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +4 -2
- package/dist/zoned/validate/hasDaylightSaving.js +13 -7
- 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/package.json +50 -1
- package/skills/gmt-arithmetic/SKILL.md +99 -12
- package/skills/gmt-basics/SKILL.md +57 -15
- package/skills/gmt-integration/SKILL.md +24 -9
- package/skills/gmt-timezone/SKILL.md +134 -29
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -19
- package/dist/internal/utcZonedDateTime.js +0 -31
|
@@ -1,22 +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 microsecond 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 microsecond string (zero-padded to 3 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedMicrosecond("America/New_York") // "000"
|
|
13
13
|
* @example getZonedMicrosecond("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedMicrosecond(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return (
|
|
20
|
+
return (frameNowWallClock(frame).microsecond ?? 0)
|
|
20
21
|
.toString()
|
|
21
22
|
.padStart(3, "0");
|
|
22
23
|
}
|
|
@@ -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 millisecond string (zero-padded to 3 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedMillisecond("America/New_York") // "000"
|
|
@@ -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 millisecond 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 millisecond string (zero-padded to 3 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedMillisecond("America/New_York") // "000"
|
|
13
13
|
* @example getZonedMillisecond("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedMillisecond(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.millisecond.toString()
|
|
21
|
-
.padStart(3, "0");
|
|
20
|
+
return frameNowWallClock(frame).millisecond.toString().padStart(3, "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 minute string (zero-padded to 2 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedMinute("America/New_York") // "00"
|
|
@@ -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 minute 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 minute string (zero-padded to 2 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedMinute("America/New_York") // "00"
|
|
13
13
|
* @example getZonedMinute("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedMinute(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.minute.toString()
|
|
21
|
-
.padStart(2, "0");
|
|
20
|
+
return frameNowWallClock(frame).minute.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 month string (zero-padded to 2 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedMonth("America/New_York") // "02"
|
|
@@ -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 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 month string (zero-padded to 2 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedMonth("America/New_York") // "02"
|
|
13
13
|
* @example getZonedMonth("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedMonth(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.month.toString()
|
|
21
|
-
.padStart(2, "0");
|
|
20
|
+
return frameNowWallClock(frame).month.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 nanosecond string (zero-padded to 3 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedNanosecond("America/New_York") // "000"
|
|
@@ -1,22 +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 nanosecond 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 nanosecond string (zero-padded to 3 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedNanosecond("America/New_York") // "000"
|
|
13
13
|
* @example getZonedNanosecond("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedNanosecond(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return (
|
|
20
|
+
return (frameNowWallClock(frame).nanosecond ?? 0)
|
|
20
21
|
.toString()
|
|
21
22
|
.padStart(3, "0");
|
|
22
23
|
}
|
|
@@ -7,8 +7,12 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
7
7
|
* - `smallestUnit` is the only option read. Any other key on `optionsArg` is ignored, so the
|
|
8
8
|
* string always carries the offset and the bracketed time zone, and smaller units are always
|
|
9
9
|
* truncated.
|
|
10
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
11
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
12
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
13
|
+
* bracket.
|
|
10
14
|
*
|
|
11
|
-
* @param ianaTimezone IANA
|
|
15
|
+
* @param ianaTimezone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
12
16
|
* @param optionsArg optional setting for the precision of the output string
|
|
13
17
|
* @returns zoned ISO 8601 datetime string or "" on invalid input
|
|
14
18
|
*
|
|
@@ -10,8 +10,12 @@ import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
|
10
10
|
* - `smallestUnit` is the only option read. Any other key on `optionsArg` is ignored, so the
|
|
11
11
|
* string always carries the offset and the bracketed time zone, and smaller units are always
|
|
12
12
|
* truncated.
|
|
13
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
14
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
15
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
16
|
+
* bracket.
|
|
13
17
|
*
|
|
14
|
-
* @param ianaTimezone IANA
|
|
18
|
+
* @param ianaTimezone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
15
19
|
* @param optionsArg optional setting for the precision of the output string
|
|
16
20
|
* @returns zoned ISO 8601 datetime string or "" on invalid input
|
|
17
21
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
/**
|
|
3
3
|
* Units extractable from the current time in a specific IANA timeZone, as
|
|
4
4
|
* consumed by `getZonedNowUnit`.
|
|
@@ -7,7 +7,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
7
7
|
*
|
|
8
8
|
* | Member | Description |
|
|
9
9
|
* | --- | --- |
|
|
10
|
-
* | `year` |
|
|
10
|
+
* | `year` | Four digits (e.g. `2024`, `0005`); a sign and six digits outside 0000–9999 (e.g. `+010000`). |
|
|
11
11
|
* | `month` | 1–12, zero-padded to 2 digits (e.g. `02`). |
|
|
12
12
|
* | `week` | Week-of-year from `parseWeekFromDate`, 1–53. |
|
|
13
13
|
* | `day` | Day of month 1–31, zero-padded (e.g. `15`). |
|
|
@@ -32,8 +32,11 @@ export type ZonedNowUnit = Temporal.SmallestUnit<"year" | "month" | "week" | "da
|
|
|
32
32
|
* - Validation is performed on timezone and unit.
|
|
33
33
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
34
34
|
* does; `"dayOfWeek"` has no plural.
|
|
35
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
36
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
35
37
|
*
|
|
36
|
-
* @param ianaTimezone IANA
|
|
38
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
39
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
37
40
|
* @param unit unit to extract from current zoned time
|
|
38
41
|
* @returns string representation of the requested unit or "" on invalid input
|
|
39
42
|
*
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
2
1
|
import { zonedNowUnitValue } from "../../internal/zonedNowUnitValue.js";
|
|
3
2
|
import { parseWeekFromDate } from "../../plain/parse/index.js";
|
|
4
|
-
import {
|
|
3
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
5
4
|
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
6
5
|
function isValidZonedNowUnit(unit) {
|
|
7
6
|
return [
|
|
@@ -26,8 +25,11 @@ function isValidZonedNowUnit(unit) {
|
|
|
26
25
|
* - Validation is performed on timezone and unit.
|
|
27
26
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
28
27
|
* does; `"dayOfWeek"` has no plural.
|
|
28
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
29
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
29
30
|
*
|
|
30
|
-
* @param ianaTimezone IANA
|
|
31
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
32
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
31
33
|
* @param unit unit to extract from current zoned time
|
|
32
34
|
* @returns string representation of the requested unit or "" on invalid input
|
|
33
35
|
*
|
|
@@ -40,13 +42,14 @@ export function getZonedNowUnit(ianaTimezone, unit) {
|
|
|
40
42
|
return "";
|
|
41
43
|
}
|
|
42
44
|
const resolvedUnit = resolveDateTimeUnit(unit);
|
|
43
|
-
|
|
45
|
+
const frame = zoneFrame(ianaTimezone);
|
|
46
|
+
if (frame === null || !isValidZonedNowUnit(resolvedUnit)) {
|
|
44
47
|
return "";
|
|
45
48
|
}
|
|
46
49
|
try {
|
|
47
|
-
const now =
|
|
48
|
-
return zonedNowUnitValue(now, resolvedUnit, (
|
|
49
|
-
const w = parseWeekFromDate(
|
|
50
|
+
const now = frameNowWallClock(frame);
|
|
51
|
+
return zonedNowUnitValue(now, resolvedUnit, (wallClock) => {
|
|
52
|
+
const w = parseWeekFromDate(wallClock.toPlainDate().toString());
|
|
50
53
|
return w === null ? "" : w.toString();
|
|
51
54
|
});
|
|
52
55
|
}
|
|
@@ -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 second string (zero-padded to 2 digits) or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedSecond("America/New_York") // "00"
|
|
@@ -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 second 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 second string (zero-padded to 2 digits) or "" on invalid input
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedSecond("America/New_York") // "00"
|
|
13
13
|
* @example getZonedSecond("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedSecond(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null)
|
|
17
18
|
return "";
|
|
18
19
|
try {
|
|
19
|
-
return
|
|
20
|
-
.second.toString()
|
|
21
|
-
.padStart(2, "0");
|
|
20
|
+
return frameNowWallClock(frame).second.toString().padStart(2, "0");
|
|
22
21
|
}
|
|
23
22
|
catch {
|
|
24
23
|
return "";
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* - Uses Temporal.Now.zonedDateTimeISO to get current date in timezone.
|
|
5
5
|
* - Returns "" for invalid 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 ISO date string (YYYY-MM-DD) or "" when invalid
|
|
9
10
|
*
|
|
10
11
|
* @example getZonedToday("America/New_York") // "2024-02-29"
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isValidTimeZone } from "../validate/index.js";
|
|
1
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
3
2
|
/**
|
|
4
3
|
* Return today's date in the given IANA timeZone as an ISO date string.
|
|
5
4
|
*
|
|
6
5
|
* - Uses Temporal.Now.zonedDateTimeISO to get current date in timezone.
|
|
7
6
|
* - Returns "" for invalid 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 ISO date string (YYYY-MM-DD) or "" when invalid
|
|
11
11
|
*
|
|
12
12
|
* @example getZonedToday("America/New_York") // "2024-02-29"
|
|
13
13
|
* @example getZonedToday("invalid") // ""
|
|
14
14
|
*/
|
|
15
15
|
export function getZonedToday(ianaTimezone) {
|
|
16
|
-
|
|
16
|
+
const frame = zoneFrame(ianaTimezone);
|
|
17
|
+
if (frame === null) {
|
|
17
18
|
return "";
|
|
18
19
|
}
|
|
19
20
|
try {
|
|
20
|
-
const today =
|
|
21
|
+
const today = frameNowWallClock(frame).toPlainDate();
|
|
21
22
|
return today.toString();
|
|
22
23
|
}
|
|
23
24
|
catch {
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* - Uses Temporal.PlainDate.weekOfYear for ISO week number.
|
|
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 week number (1-53) or null on invalid input
|
|
10
11
|
*
|
|
11
12
|
* @example getZonedWeekOfYear("America/New_York") // 9
|
|
@@ -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 week of year for the specified IANA timeZone.
|
|
5
4
|
*
|
|
@@ -7,17 +6,19 @@ import { isValidTimeZone } from "../validate/index.js";
|
|
|
7
6
|
* - Uses Temporal.PlainDate.weekOfYear for ISO week number.
|
|
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 week number (1-53) or null on invalid input
|
|
12
12
|
*
|
|
13
13
|
* @example getZonedWeekOfYear("America/New_York") // 9
|
|
14
14
|
* @example getZonedWeekOfYear("invalid") // null
|
|
15
15
|
*/
|
|
16
16
|
export function getZonedWeekOfYear(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.toPlainDate().weekOfYear ?? null;
|
|
22
23
|
}
|
|
23
24
|
catch {
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
5
5
|
* - Validation is performed on the timezone.
|
|
6
|
+
* - The year is zero-padded to 4 digits. A year outside 0000–9999 is written with a sign and six
|
|
7
|
+
* digits (`+010000`, `-000005`), as Temporal writes it at the head of a date.
|
|
6
8
|
*
|
|
7
|
-
* @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)
|
|
8
11
|
* @returns current year string (zero-padded to 4 digits) or "" on invalid input
|
|
9
12
|
*
|
|
10
13
|
* @example getZonedYear("America/New_York") // "2024"
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { frameNowWallClock, zoneFrame } from "../../internal/zoneFrame.js";
|
|
2
|
+
import { isoYearString } from "../../internal/isoYearString.js";
|
|
3
3
|
/**
|
|
4
4
|
* Return the current year for the specified IANA timeZone.
|
|
5
5
|
*
|
|
6
6
|
* - Uses Temporal.Now.zonedDateTimeISO to get the current time.
|
|
7
7
|
* - Validation is performed on the timezone.
|
|
8
|
+
* - The year is zero-padded to 4 digits. A year outside 0000–9999 is written with a sign and six
|
|
9
|
+
* digits (`+010000`, `-000005`), as Temporal writes it at the head of a date.
|
|
8
10
|
*
|
|
9
|
-
* @param ianaTimezone IANA
|
|
11
|
+
* @param ianaTimezone IANA name or UTC offset: a time zone identifier (`+05:30`, `+0530`, `-08`) or
|
|
12
|
+
* a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
10
13
|
* @returns current year string (zero-padded to 4 digits) or "" on invalid input
|
|
11
14
|
*
|
|
12
15
|
* @example getZonedYear("America/New_York") // "2024"
|
|
13
16
|
* @example getZonedYear("invalid") // ""
|
|
14
17
|
*/
|
|
15
18
|
export function getZonedYear(ianaTimezone) {
|
|
16
|
-
|
|
19
|
+
const frame = zoneFrame(ianaTimezone);
|
|
20
|
+
if (frame === null)
|
|
17
21
|
return "";
|
|
18
22
|
try {
|
|
19
|
-
return
|
|
20
|
-
.year.toString()
|
|
21
|
-
.padStart(4, "0");
|
|
23
|
+
return isoYearString(frameNowWallClock(frame).year);
|
|
22
24
|
}
|
|
23
25
|
catch {
|
|
24
26
|
return "";
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { calendarOfAllZonedValues, formatZonedInCalendar, halfOpenXor, parseCalendarZonedValue, } from "../../internal/index.js";
|
|
4
4
|
import { isValidCalendarZonedInterval } from "./validate/index.js";
|
|
5
|
+
import { isObject } from "../../internal/isObject.js";
|
|
5
6
|
/**
|
|
6
7
|
* Return the symmetric difference across a list of zoned intervals — the set of instants
|
|
7
8
|
* covered by an odd number of the input intervals.
|
|
@@ -39,8 +40,7 @@ export function intervalXorAllZoned(intervals) {
|
|
|
39
40
|
if (!Array.isArray(intervals) || intervals.length === 0) {
|
|
40
41
|
return [];
|
|
41
42
|
}
|
|
42
|
-
if (!intervals.every((interval) => interval &&
|
|
43
|
-
typeof interval === "object" &&
|
|
43
|
+
if (!intervals.every((interval) => isObject(interval) &&
|
|
44
44
|
typeof interval.start === "string" &&
|
|
45
45
|
typeof interval.end === "string" &&
|
|
46
46
|
isValidCalendarZonedInterval(interval.start, interval.end))) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { calendarOfAllZonedValues, formatZonedInCalendar, halfOpenMerge, parseCalendarZonedValue, } from "../../internal/index.js";
|
|
4
4
|
import { isValidCalendarZonedInterval } from "./validate/index.js";
|
|
5
|
+
import { isObject } from "../../internal/isObject.js";
|
|
5
6
|
/**
|
|
6
7
|
* Collapse a list of zoned intervals into the minimum set of non-overlapping intervals.
|
|
7
8
|
*
|
|
@@ -43,8 +44,7 @@ export function mergeIntervalsZoned(intervals) {
|
|
|
43
44
|
if (!Array.isArray(intervals) || intervals.length === 0) {
|
|
44
45
|
return [];
|
|
45
46
|
}
|
|
46
|
-
if (!intervals.every((interval) => interval &&
|
|
47
|
-
typeof interval === "object" &&
|
|
47
|
+
if (!intervals.every((interval) => isObject(interval) &&
|
|
48
48
|
typeof interval.start === "string" &&
|
|
49
49
|
typeof interval.end === "string" &&
|
|
50
50
|
isValidCalendarZonedInterval(interval.start, interval.end))) {
|
|
@@ -8,7 +8,7 @@ import type { Temporal } from "@js-temporal/polyfill";
|
|
|
8
8
|
*
|
|
9
9
|
* | Member | Description |
|
|
10
10
|
* | --- | --- |
|
|
11
|
-
* | `year` |
|
|
11
|
+
* | `year` | Four digits (e.g. `2024`, `0005`); a sign and six digits outside 0000–9999 (e.g. `+010000`). |
|
|
12
12
|
* | `month` | Zero-padded 2 (e.g. `03`). |
|
|
13
13
|
* | `week` | Week-of-year, 1–53 (`weekStartsOn`-controlled). |
|
|
14
14
|
* | `day` | Zero-padded 2. |
|
|
@@ -34,6 +34,8 @@ export type ZonedParseUnit = Temporal.SmallestUnit<"year" | "month" | "week" | "
|
|
|
34
34
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
35
35
|
* does; `"dayOfWeek"` has no plural.
|
|
36
36
|
* - Returns "" for invalid input.
|
|
37
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
38
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
37
39
|
*
|
|
38
40
|
* @param value zoned ISO 8601 datetime string
|
|
39
41
|
* @param unit unit to extract
|
|
@@ -41,6 +43,7 @@ export type ZonedParseUnit = Temporal.SmallestUnit<"year" | "month" | "week" | "
|
|
|
41
43
|
* @returns string representation of the requested unit or "" when invalid
|
|
42
44
|
*
|
|
43
45
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "year") // "2024"
|
|
46
|
+
* @example parseUnitFromZoned("0005-06-01T12:30:00+00:00[UTC]", "year") // "0005"
|
|
44
47
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "milliseconds") // "789"
|
|
45
48
|
* @example parseUnitFromZoned("2024-12-31T12:00:00+00:00[UTC]", "week", { weekStartsOn: "sunday" }) // "1"
|
|
46
49
|
* @example parseUnitFromZoned("invalid", "year") // ""
|
|
@@ -4,6 +4,7 @@ import { zonedDateTimeFrom } from "../../internal/index.js";
|
|
|
4
4
|
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
5
5
|
import { resolveWeekStartsOn } from "../../internal/resolveWeekStartsOn.js";
|
|
6
6
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
7
|
+
import { isoYearString } from "../../internal/isoYearString.js";
|
|
7
8
|
function isValidZonedUnit(unit) {
|
|
8
9
|
return [
|
|
9
10
|
"year",
|
|
@@ -28,6 +29,8 @@ function isValidZonedUnit(unit) {
|
|
|
28
29
|
* - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
|
|
29
30
|
* does; `"dayOfWeek"` has no plural.
|
|
30
31
|
* - Returns "" for invalid input.
|
|
32
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
33
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
31
34
|
*
|
|
32
35
|
* @param value zoned ISO 8601 datetime string
|
|
33
36
|
* @param unit unit to extract
|
|
@@ -35,6 +38,7 @@ function isValidZonedUnit(unit) {
|
|
|
35
38
|
* @returns string representation of the requested unit or "" when invalid
|
|
36
39
|
*
|
|
37
40
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "year") // "2024"
|
|
41
|
+
* @example parseUnitFromZoned("0005-06-01T12:30:00+00:00[UTC]", "year") // "0005"
|
|
38
42
|
* @example parseUnitFromZoned("2024-02-29T12:34:56.789+00:00[UTC]", "milliseconds") // "789"
|
|
39
43
|
* @example parseUnitFromZoned("2024-12-31T12:00:00+00:00[UTC]", "week", { weekStartsOn: "sunday" }) // "1"
|
|
40
44
|
* @example parseUnitFromZoned("invalid", "year") // ""
|
|
@@ -56,7 +60,7 @@ export function parseUnitFromZoned(value, unit, optionsArg) {
|
|
|
56
60
|
const zonedDateTime = zonedDateTimeFrom(value);
|
|
57
61
|
switch (resolvedUnit) {
|
|
58
62
|
case "year":
|
|
59
|
-
return zonedDateTime.year
|
|
63
|
+
return isoYearString(zonedDateTime.year);
|
|
60
64
|
case "month":
|
|
61
65
|
return zonedDateTime.month.toString().padStart(2, "0");
|
|
62
66
|
case "week":
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the year for a given ISO 8601 zoned datetime string.
|
|
3
3
|
*
|
|
4
|
-
* - Returns
|
|
4
|
+
* - Returns the year as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
|
|
5
|
+
* digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
5
6
|
* - Returns "" for invalid input.
|
|
6
7
|
*
|
|
7
8
|
* @param value ISO zoned datetime string
|
|
8
|
-
* @returns
|
|
9
|
+
* @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
|
|
9
10
|
*
|
|
10
11
|
* @example parseYearFromZoned("2024-03-15T14:30:45.123+00:00[UTC]") // "2024"
|
|
12
|
+
* @example parseYearFromZoned("0005-06-01T12:30:00+00:00[UTC]") // "0005"
|
|
11
13
|
* @example parseYearFromZoned("invalid") // ""
|
|
12
14
|
*/
|
|
13
15
|
export declare function parseYearFromZoned(value: string): string;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { isValidZonedDateTime } from "../validate/index.js";
|
|
2
2
|
import { zonedDateTimeFrom } from "../../internal/index.js";
|
|
3
|
+
import { isoYearString } from "../../internal/isoYearString.js";
|
|
3
4
|
/**
|
|
4
5
|
* Return the year for a given ISO 8601 zoned datetime string.
|
|
5
6
|
*
|
|
6
|
-
* - Returns
|
|
7
|
+
* - Returns the year as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
|
|
8
|
+
* digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
7
9
|
* - Returns "" for invalid input.
|
|
8
10
|
*
|
|
9
11
|
* @param value ISO zoned datetime string
|
|
10
|
-
* @returns
|
|
12
|
+
* @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
|
|
11
13
|
*
|
|
12
14
|
* @example parseYearFromZoned("2024-03-15T14:30:45.123+00:00[UTC]") // "2024"
|
|
15
|
+
* @example parseYearFromZoned("0005-06-01T12:30:00+00:00[UTC]") // "0005"
|
|
13
16
|
* @example parseYearFromZoned("invalid") // ""
|
|
14
17
|
*/
|
|
15
18
|
export function parseYearFromZoned(value) {
|
|
@@ -18,7 +21,7 @@ export function parseYearFromZoned(value) {
|
|
|
18
21
|
}
|
|
19
22
|
try {
|
|
20
23
|
const zonedDateTime = zonedDateTimeFrom(value);
|
|
21
|
-
return zonedDateTime.year
|
|
24
|
+
return isoYearString(zonedDateTime.year);
|
|
22
25
|
}
|
|
23
26
|
catch {
|
|
24
27
|
return "";
|