@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,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
|
|
1
|
+
import { frameInstant, frameZoned, normalizeZoneFrame, readDurationUnits, resolveOverflow, subtractFromZoned, } from "../../internal/index.js";
|
|
3
2
|
import { resolveUnixEpochUnit, toUnixEpoch, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
4
3
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
5
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
@@ -10,6 +9,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
10
9
|
* - Validates duration units and values.
|
|
11
10
|
* - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
|
|
12
11
|
* - Returns null for invalid input.
|
|
12
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
13
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
14
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
15
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
16
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `null`. An offset to the minute has no
|
|
17
|
+
* such limit.
|
|
13
18
|
*
|
|
14
19
|
* @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
|
|
15
20
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
|
|
@@ -29,15 +34,12 @@ export function subtractUnix(value, units, options) {
|
|
|
29
34
|
return null;
|
|
30
35
|
}
|
|
31
36
|
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
32
|
-
const
|
|
37
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
33
38
|
const overflow = resolveOverflow(options?.overflow);
|
|
34
|
-
if (
|
|
39
|
+
if (frame === null || epochUnit === null)
|
|
35
40
|
return null;
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
Object.keys(units).every(isValidDateTimeDurationUnit);
|
|
39
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
40
|
-
if (!validUnits || !validAmounts) {
|
|
41
|
+
const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
|
|
42
|
+
if (amounts === null) {
|
|
41
43
|
return null;
|
|
42
44
|
}
|
|
43
45
|
const instant = unixEpochToInstant(value, epochUnit);
|
|
@@ -45,8 +47,8 @@ export function subtractUnix(value, units, options) {
|
|
|
45
47
|
return null;
|
|
46
48
|
}
|
|
47
49
|
try {
|
|
48
|
-
const zdt = instant
|
|
49
|
-
return toUnixEpoch(subtractFromZoned(zdt,
|
|
50
|
+
const zdt = frameZoned(instant, frame);
|
|
51
|
+
return toUnixEpoch(frameInstant(subtractFromZoned(zdt, amounts, { overflow }), frame), epochUnit);
|
|
50
52
|
}
|
|
51
53
|
catch {
|
|
52
54
|
return null;
|
|
@@ -17,6 +17,12 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
17
17
|
* - `isSameDay(a, b)` → `areUnixEqualBy(a, b, "day")`
|
|
18
18
|
* - `isSameMonth(a, b)` → `areUnixEqualBy(a, b, "month")`
|
|
19
19
|
* - `isSameYear(a, b)` → `areUnixEqualBy(a, b, "year")`
|
|
20
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
21
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
22
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
23
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
24
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `false`. There `false` is the sentinel,
|
|
25
|
+
* not a comparison. An offset to the minute has no such limit.
|
|
20
26
|
*
|
|
21
27
|
* @param value1 first Unix epoch: a safe integer or a digit string
|
|
22
28
|
* @param value2 second Unix epoch, in the same unit
|
|
@@ -28,6 +34,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
28
34
|
* @example areUnixEqualBy(1704067200000, 1735689600000, "year", { timeZone: "UTC" }) // false (2024-01-01 vs 2025-01-01)
|
|
29
35
|
* @example areUnixEqualBy("1710498000000", 1710503000000, "days") // true (digit string, plural unit, UTC by default)
|
|
30
36
|
* @example areUnixEqualBy(Number.NaN, 1710498000000, "day") // false
|
|
37
|
+
* @example areUnixEqualBy(2669999, 2670000, "day", { timeZone: "-00:44:30" }) // false (the local day turns at 00:44:30Z)
|
|
31
38
|
*/
|
|
32
39
|
export declare function areUnixEqualBy(value1: number | string, value2: number | string, unit: Temporal.DateTimeUnit | Temporal.PluralUnit<Temporal.DateTimeUnit>, options?: {
|
|
33
40
|
/**
|
|
@@ -38,8 +45,10 @@ export declare function areUnixEqualBy(value1: number | string, value2: number |
|
|
|
38
45
|
*/
|
|
39
46
|
epochUnit?: UnixUnit;
|
|
40
47
|
/**
|
|
41
|
-
* The time zone the unit boundaries are found in: an IANA name, a UTC offset
|
|
42
|
-
*
|
|
48
|
+
* The time zone the unit boundaries are found in: an IANA name, a UTC offset (a time zone
|
|
49
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
50
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
51
|
+
* `false`.
|
|
43
52
|
*
|
|
44
53
|
* @defaultValue `"UTC"`
|
|
45
54
|
*/
|
|
@@ -17,6 +17,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
17
17
|
* - `isSameDay(a, b)` → `areUnixEqualBy(a, b, "day")`
|
|
18
18
|
* - `isSameMonth(a, b)` → `areUnixEqualBy(a, b, "month")`
|
|
19
19
|
* - `isSameYear(a, b)` → `areUnixEqualBy(a, b, "year")`
|
|
20
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
21
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
22
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
23
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
24
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `false`. There `false` is the sentinel,
|
|
25
|
+
* not a comparison. An offset to the minute has no such limit.
|
|
20
26
|
*
|
|
21
27
|
* @param value1 first Unix epoch: a safe integer or a digit string
|
|
22
28
|
* @param value2 second Unix epoch, in the same unit
|
|
@@ -28,6 +34,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
28
34
|
* @example areUnixEqualBy(1704067200000, 1735689600000, "year", { timeZone: "UTC" }) // false (2024-01-01 vs 2025-01-01)
|
|
29
35
|
* @example areUnixEqualBy("1710498000000", 1710503000000, "days") // true (digit string, plural unit, UTC by default)
|
|
30
36
|
* @example areUnixEqualBy(Number.NaN, 1710498000000, "day") // false
|
|
37
|
+
* @example areUnixEqualBy(2669999, 2670000, "day", { timeZone: "-00:44:30" }) // false (the local day turns at 00:44:30Z)
|
|
31
38
|
*/
|
|
32
39
|
export function areUnixEqualBy(value1, value2, unit, options) {
|
|
33
40
|
if (!isOptionsArgument(options)) {
|
|
@@ -18,6 +18,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
18
18
|
* @example convertUnixToPlainDate("1709164800", { epochUnit: "second", timeZone: "Asia/Tokyo" }) // "2024-02-29"
|
|
19
19
|
* @example convertUnixToPlainDate(1709164800000, { timeZone: "Asia/Tokio" }) // "" (unknown zone)
|
|
20
20
|
* @example convertUnixToPlainDate(NaN) // ""
|
|
21
|
+
* @example convertUnixToPlainDate(1800000, { timeZone: "-00:44:30" }) // "1969-12-31" (a stored offset with seconds)
|
|
21
22
|
*/
|
|
22
23
|
export declare function convertUnixToPlainDate(unix: number | string, options?: {
|
|
23
24
|
/**
|
|
@@ -28,8 +29,10 @@ export declare function convertUnixToPlainDate(unix: number | string, options?:
|
|
|
28
29
|
*/
|
|
29
30
|
epochUnit?: UnixUnit;
|
|
30
31
|
/**
|
|
31
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
32
|
-
*
|
|
32
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
33
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
34
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
35
|
+
* `""`.
|
|
33
36
|
*
|
|
34
37
|
* @defaultValue `"UTC"`
|
|
35
38
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
|
-
import {
|
|
2
|
+
import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
|
|
3
3
|
import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
@@ -21,6 +21,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
21
21
|
* @example convertUnixToPlainDate("1709164800", { epochUnit: "second", timeZone: "Asia/Tokyo" }) // "2024-02-29"
|
|
22
22
|
* @example convertUnixToPlainDate(1709164800000, { timeZone: "Asia/Tokio" }) // "" (unknown zone)
|
|
23
23
|
* @example convertUnixToPlainDate(NaN) // ""
|
|
24
|
+
* @example convertUnixToPlainDate(1800000, { timeZone: "-00:44:30" }) // "1969-12-31" (a stored offset with seconds)
|
|
24
25
|
*/
|
|
25
26
|
export function convertUnixToPlainDate(unix, options) {
|
|
26
27
|
try {
|
|
@@ -28,14 +29,14 @@ export function convertUnixToPlainDate(unix, options) {
|
|
|
28
29
|
return "";
|
|
29
30
|
}
|
|
30
31
|
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
31
|
-
const
|
|
32
|
-
if (epochUnit === null ||
|
|
32
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
33
|
+
if (epochUnit === null || frame === null)
|
|
33
34
|
return "";
|
|
34
35
|
const instant = unixEpochToInstant(unix, epochUnit);
|
|
35
36
|
if (instant === null)
|
|
36
37
|
return "";
|
|
37
38
|
try {
|
|
38
|
-
return instant
|
|
39
|
+
return frameWallClock(instant, frame).toPlainDate().toString();
|
|
39
40
|
}
|
|
40
41
|
catch {
|
|
41
42
|
return "";
|
|
@@ -16,6 +16,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
16
16
|
* @example convertUnixToPlainDateTime(-1, { timeZone: "UTC" }) // "1969-12-31T23:59:59.999"
|
|
17
17
|
* @example convertUnixToPlainDateTime("1709164800000", { timeZone: "Asia/Tokyo" }) // "2024-02-29T09:00:00"
|
|
18
18
|
* @example convertUnixToPlainDateTime(NaN) // ""
|
|
19
|
+
* @example convertUnixToPlainDateTime(45870000, { timeZone: "-00:44:30" }) // "1970-01-01T12:00:00" (a stored offset with seconds)
|
|
19
20
|
*/
|
|
20
21
|
export declare function convertUnixToPlainDateTime(unix: number | string, options?: {
|
|
21
22
|
/**
|
|
@@ -26,8 +27,10 @@ export declare function convertUnixToPlainDateTime(unix: number | string, option
|
|
|
26
27
|
*/
|
|
27
28
|
epochUnit?: UnixUnit;
|
|
28
29
|
/**
|
|
29
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
30
|
-
*
|
|
30
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
31
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
32
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
33
|
+
* `""`.
|
|
31
34
|
*
|
|
32
35
|
* @defaultValue `"UTC"`
|
|
33
36
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
|
-
import {
|
|
2
|
+
import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
|
|
3
3
|
import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
@@ -19,6 +19,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
19
19
|
* @example convertUnixToPlainDateTime(-1, { timeZone: "UTC" }) // "1969-12-31T23:59:59.999"
|
|
20
20
|
* @example convertUnixToPlainDateTime("1709164800000", { timeZone: "Asia/Tokyo" }) // "2024-02-29T09:00:00"
|
|
21
21
|
* @example convertUnixToPlainDateTime(NaN) // ""
|
|
22
|
+
* @example convertUnixToPlainDateTime(45870000, { timeZone: "-00:44:30" }) // "1970-01-01T12:00:00" (a stored offset with seconds)
|
|
22
23
|
*/
|
|
23
24
|
export function convertUnixToPlainDateTime(unix, options) {
|
|
24
25
|
try {
|
|
@@ -26,14 +27,14 @@ export function convertUnixToPlainDateTime(unix, options) {
|
|
|
26
27
|
return "";
|
|
27
28
|
}
|
|
28
29
|
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
29
|
-
const
|
|
30
|
-
if (epochUnit === null ||
|
|
30
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
31
|
+
if (epochUnit === null || frame === null)
|
|
31
32
|
return "";
|
|
32
33
|
const instant = unixEpochToInstant(unix, epochUnit);
|
|
33
34
|
if (instant === null)
|
|
34
35
|
return "";
|
|
35
36
|
try {
|
|
36
|
-
return instant
|
|
37
|
+
return frameWallClock(instant, frame).toString();
|
|
37
38
|
}
|
|
38
39
|
catch {
|
|
39
40
|
return "";
|
|
@@ -16,6 +16,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
16
16
|
* @example convertUnixToPlainTime(-1, { timeZone: "UTC" }) // "23:59:59.999"
|
|
17
17
|
* @example convertUnixToPlainTime("1706659200000", { timeZone: "local" }) // system-zone wall clock, e.g. "19:00:00" in America/New_York
|
|
18
18
|
* @example convertUnixToPlainTime(NaN) // ""
|
|
19
|
+
* @example convertUnixToPlainTime(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
|
|
19
20
|
*/
|
|
20
21
|
export declare function convertUnixToPlainTime(unix: number | string, options?: {
|
|
21
22
|
/**
|
|
@@ -26,8 +27,10 @@ export declare function convertUnixToPlainTime(unix: number | string, options?:
|
|
|
26
27
|
*/
|
|
27
28
|
epochUnit?: UnixUnit;
|
|
28
29
|
/**
|
|
29
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
30
|
-
*
|
|
30
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
31
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
32
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
33
|
+
* `""`.
|
|
31
34
|
*
|
|
32
35
|
* @defaultValue `"UTC"`
|
|
33
36
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
|
-
import {
|
|
2
|
+
import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
|
|
3
3
|
import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
@@ -19,6 +19,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
19
19
|
* @example convertUnixToPlainTime(-1, { timeZone: "UTC" }) // "23:59:59.999"
|
|
20
20
|
* @example convertUnixToPlainTime("1706659200000", { timeZone: "local" }) // system-zone wall clock, e.g. "19:00:00" in America/New_York
|
|
21
21
|
* @example convertUnixToPlainTime(NaN) // ""
|
|
22
|
+
* @example convertUnixToPlainTime(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
|
|
22
23
|
*/
|
|
23
24
|
export function convertUnixToPlainTime(unix, options) {
|
|
24
25
|
try {
|
|
@@ -26,14 +27,14 @@ export function convertUnixToPlainTime(unix, options) {
|
|
|
26
27
|
return "";
|
|
27
28
|
}
|
|
28
29
|
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
29
|
-
const
|
|
30
|
-
if (epochUnit === null ||
|
|
30
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
31
|
+
if (epochUnit === null || frame === null)
|
|
31
32
|
return "";
|
|
32
33
|
const instant = unixEpochToInstant(unix, epochUnit);
|
|
33
34
|
if (instant === null)
|
|
34
35
|
return "";
|
|
35
36
|
try {
|
|
36
|
-
return instant
|
|
37
|
+
return frameWallClock(instant, frame).toPlainTime().toString();
|
|
37
38
|
}
|
|
38
39
|
catch {
|
|
39
40
|
return "";
|
|
@@ -7,9 +7,13 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
|
|
|
7
7
|
* instant outside the Temporal range, returns "".
|
|
8
8
|
* - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
|
|
9
9
|
* bare `"seconds"` string) returns "".
|
|
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
15
|
* @param value epoch value: a safe integer or a digit string
|
|
12
|
-
* @param timeZone IANA name or UTC offset
|
|
16
|
+
* @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
13
17
|
* @param options optional: how `value` is read
|
|
14
18
|
* @returns zoned ISO 8601 string or "" on invalid
|
|
15
19
|
*
|
|
@@ -8,9 +8,13 @@ import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
|
8
8
|
* instant outside the Temporal range, returns "".
|
|
9
9
|
* - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
|
|
10
10
|
* bare `"seconds"` string) returns "".
|
|
11
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
12
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
13
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
14
|
+
* bracket.
|
|
11
15
|
*
|
|
12
16
|
* @param value epoch value: a safe integer or a digit string
|
|
13
|
-
* @param timeZone IANA name or UTC offset
|
|
17
|
+
* @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
|
|
14
18
|
* @param options optional: how `value` is read
|
|
15
19
|
* @returns zoned ISO 8601 string or "" on invalid
|
|
16
20
|
*
|
|
@@ -24,8 +24,8 @@ export interface FormatCalendarUnixOptions {
|
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
26
|
* The time zone used for both the calendar-day comparison and the rendered clock time: an IANA
|
|
27
|
-
* name, a UTC offset, or `"local"` for the system
|
|
28
|
-
* ECMA-402 throws RangeError for it.
|
|
27
|
+
* name, a UTC offset to the minute (what `isValidTimeZone` accepts), or `"local"` for the system
|
|
28
|
+
* time zone. An unknown zone returns `""`, as ECMA-402 throws RangeError for it.
|
|
29
29
|
*
|
|
30
30
|
* @defaultValue `"UTC"`
|
|
31
31
|
*/
|
|
@@ -49,6 +49,10 @@ export interface FormatCalendarUnixOptions {
|
|
|
49
49
|
* digits; anything else returns `""`.
|
|
50
50
|
* - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
|
|
51
51
|
* rejects it.
|
|
52
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
|
|
53
|
+
* identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
|
|
54
|
+
* `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
|
|
55
|
+
* Node, throw a RangeError exception"). Pass the IANA name.
|
|
52
56
|
*
|
|
53
57
|
* @param value unix epoch (string or number, per `epochUnit`) to format
|
|
54
58
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -3,6 +3,7 @@ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
|
|
|
3
3
|
import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
4
4
|
import { resolveUnixFormatReference } from "../../internal/unixFormatReference.js";
|
|
5
5
|
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
6
|
+
import { isObject } from "../../internal/isObject.js";
|
|
6
7
|
/**
|
|
7
8
|
* Format a unix epoch value as a relative day label plus time-of-day, e.g.
|
|
8
9
|
* "Tomorrow at 2:30 PM" — the unix counterpart of `formatCalendar`. See
|
|
@@ -13,6 +14,10 @@ import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
|
13
14
|
* digits; anything else returns `""`.
|
|
14
15
|
* - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
|
|
15
16
|
* rejects it.
|
|
17
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
|
|
18
|
+
* identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
|
|
19
|
+
* `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
|
|
20
|
+
* Node, throw a RangeError exception"). Pass the IANA name.
|
|
16
21
|
*
|
|
17
22
|
* @param value unix epoch (string or number, per `epochUnit`) to format
|
|
18
23
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -31,7 +36,7 @@ export function formatCalendarUnix(value, locale, options = {}) {
|
|
|
31
36
|
try {
|
|
32
37
|
// Temporal GetOptionsObject: undefined is defaults (the parameter default); anything else that is
|
|
33
38
|
// not an object, including null, is a TypeError.
|
|
34
|
-
if (options
|
|
39
|
+
if (!isObject(options))
|
|
35
40
|
return "";
|
|
36
41
|
const epochUnit = resolveUnixEpochUnit(options.epochUnit);
|
|
37
42
|
if (epochUnit === null)
|
|
@@ -52,9 +52,10 @@ export interface FormatRelativeUnixOptions {
|
|
|
52
52
|
*/
|
|
53
53
|
reference?: string | number;
|
|
54
54
|
/**
|
|
55
|
-
* The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset
|
|
56
|
-
*
|
|
57
|
-
*
|
|
55
|
+
* The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset (a
|
|
56
|
+
* time zone identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
57
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
58
|
+
* `""` whatever the unit.
|
|
58
59
|
*
|
|
59
60
|
* @defaultValue `"UTC"`
|
|
60
61
|
*/
|
|
@@ -75,6 +76,12 @@ export interface FormatRelativeUnixOptions {
|
|
|
75
76
|
* digits; `largestUnit` and `epochUnit` accept singular or plural names.
|
|
76
77
|
* - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
|
|
77
78
|
* rejects it.
|
|
79
|
+
* - **Limit at an offset with seconds.** A month or a year is measured from `reference`, placed in
|
|
80
|
+
* the offset's whole-minute zone and moved by its seconds, and the moved instant must be inside
|
|
81
|
+
* Temporal's range. So when one is measured and `reference` is within the offset's seconds (under
|
|
82
|
+
* a minute) of the last instant Temporal supports (`+275760-09-13T00:00:00Z`) for an offset east
|
|
83
|
+
* of UTC, or of the first (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset
|
|
84
|
+
* to the minute has no such limit.
|
|
78
85
|
*
|
|
79
86
|
* @param value unix epoch (string or number, per `epochUnit`) to format
|
|
80
87
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -89,5 +96,6 @@ export interface FormatRelativeUnixOptions {
|
|
|
89
96
|
* @example formatRelativeUnix(0, "en-US", null as never) // ""
|
|
90
97
|
* @example formatRelativeUnix("not-a-number") // ""
|
|
91
98
|
* @example formatRelativeUnix(1709163000000, ["fr-FR", "en-US"], { reference: 1709164800000 }) // "il y a 30 minutes"
|
|
99
|
+
* @example formatRelativeUnix(218670000, "en-US", { reference: 45870000, timeZone: "-00:44:30" }) // "in 2 days" (a stored offset with seconds)
|
|
92
100
|
*/
|
|
93
101
|
export declare function formatRelativeUnix(value: string | number, locale?: string | string[], options?: FormatRelativeUnixOptions): string;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- cross-family Temporal type clone, by design (rule 5)
|
|
2
2
|
import { formatRelativeDuration } from "../../internal/formatRelativeDuration.js";
|
|
3
|
-
import {
|
|
3
|
+
import { frameZoned, normalizeZoneFrame } from "../../internal/zoneFrame.js";
|
|
4
4
|
import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
|
|
5
5
|
import { resolveUnixFormatReference } from "../../internal/unixFormatReference.js";
|
|
6
6
|
import { durationTotal } from "../../internal/zonedWallClockDifference.js";
|
|
7
|
+
import { isObject } from "../../internal/isObject.js";
|
|
7
8
|
/**
|
|
8
9
|
* Format the relative time between a unix epoch value and a reference instant.
|
|
9
10
|
*
|
|
@@ -19,6 +20,12 @@ import { durationTotal } from "../../internal/zonedWallClockDifference.js";
|
|
|
19
20
|
* digits; `largestUnit` and `epochUnit` accept singular or plural names.
|
|
20
21
|
* - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
|
|
21
22
|
* rejects it.
|
|
23
|
+
* - **Limit at an offset with seconds.** A month or a year is measured from `reference`, placed in
|
|
24
|
+
* the offset's whole-minute zone and moved by its seconds, and the moved instant must be inside
|
|
25
|
+
* Temporal's range. So when one is measured and `reference` is within the offset's seconds (under
|
|
26
|
+
* a minute) of the last instant Temporal supports (`+275760-09-13T00:00:00Z`) for an offset east
|
|
27
|
+
* of UTC, or of the first (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset
|
|
28
|
+
* to the minute has no such limit.
|
|
22
29
|
*
|
|
23
30
|
* @param value unix epoch (string or number, per `epochUnit`) to format
|
|
24
31
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -33,18 +40,19 @@ import { durationTotal } from "../../internal/zonedWallClockDifference.js";
|
|
|
33
40
|
* @example formatRelativeUnix(0, "en-US", null as never) // ""
|
|
34
41
|
* @example formatRelativeUnix("not-a-number") // ""
|
|
35
42
|
* @example formatRelativeUnix(1709163000000, ["fr-FR", "en-US"], { reference: 1709164800000 }) // "il y a 30 minutes"
|
|
43
|
+
* @example formatRelativeUnix(218670000, "en-US", { reference: 45870000, timeZone: "-00:44:30" }) // "in 2 days" (a stored offset with seconds)
|
|
36
44
|
*/
|
|
37
45
|
export function formatRelativeUnix(value, locale, options = {}) {
|
|
38
46
|
try {
|
|
39
47
|
// Temporal GetOptionsObject: undefined is defaults (the parameter default); anything else that is
|
|
40
48
|
// not an object, including null, is a TypeError.
|
|
41
|
-
if (options
|
|
49
|
+
if (!isObject(options))
|
|
42
50
|
return "";
|
|
43
51
|
const epochUnit = resolveUnixEpochUnit(options.epochUnit);
|
|
44
52
|
if (epochUnit === null)
|
|
45
53
|
return "";
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
54
|
+
const frame = normalizeZoneFrame(options.timeZone);
|
|
55
|
+
if (frame === null)
|
|
48
56
|
return "";
|
|
49
57
|
const target = unixEpochToInstant(value, epochUnit);
|
|
50
58
|
if (target === null)
|
|
@@ -55,7 +63,7 @@ export function formatRelativeUnix(value, locale, options = {}) {
|
|
|
55
63
|
try {
|
|
56
64
|
const diff = target.since(reference);
|
|
57
65
|
// month/year are calendrical and need a relativeTo anchor.
|
|
58
|
-
return formatRelativeDuration(diff, locale, options, (unit) => durationTotal(diff, unit, reference
|
|
66
|
+
return formatRelativeDuration(diff, locale, options, (unit) => durationTotal(diff, unit, frameZoned(reference, frame)));
|
|
59
67
|
}
|
|
60
68
|
catch {
|
|
61
69
|
return "";
|
|
@@ -12,8 +12,9 @@ export interface FormatUnixOptions extends Intl.DateTimeFormatOptions {
|
|
|
12
12
|
*/
|
|
13
13
|
epochUnit?: UnixUnit;
|
|
14
14
|
/**
|
|
15
|
-
* The time zone the value is rendered in: an IANA name, a UTC offset
|
|
16
|
-
* time zone. An unknown zone returns
|
|
15
|
+
* The time zone the value is rendered in: an IANA name, a UTC offset to the minute (what
|
|
16
|
+
* `isValidTimeZone` accepts), or `"local"` for the system time zone. An unknown zone returns
|
|
17
|
+
* `""`, as ECMA-402 throws RangeError for it.
|
|
17
18
|
*
|
|
18
19
|
* @defaultValue `"UTC"`
|
|
19
20
|
*/
|
|
@@ -41,6 +42,10 @@ export interface FormatUnixOptions extends Intl.DateTimeFormatOptions {
|
|
|
41
42
|
* the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
|
|
42
43
|
* `includeTimeZoneName` returned `""`. Pass the fields the old text showed to keep it.
|
|
43
44
|
* - `options` null returns `""`, as ECMA-402's CoerceOptionsToObject rejects it.
|
|
45
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
|
|
46
|
+
* identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
|
|
47
|
+
* `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
|
|
48
|
+
* Node, throw a RangeError exception"). Pass the IANA name.
|
|
44
49
|
*
|
|
45
50
|
* @param value unix epoch value to format (string or number, per `epochUnit`)
|
|
46
51
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -20,6 +20,10 @@ import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
|
20
20
|
* the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
|
|
21
21
|
* `includeTimeZoneName` returned `""`. Pass the fields the old text showed to keep it.
|
|
22
22
|
* - `options` null returns `""`, as ECMA-402's CoerceOptionsToObject rejects it.
|
|
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.
|
|
23
27
|
*
|
|
24
28
|
* @param value unix epoch value to format (string or number, per `epochUnit`)
|
|
25
29
|
* @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
5
5
|
* - Returns zero-padded string to 2 digits.
|
|
6
|
-
* - Returns "" on failure.
|
|
7
6
|
*
|
|
8
|
-
* @returns current day string (zero-padded to 2 digits)
|
|
7
|
+
* @returns current day string (zero-padded to 2 digits)
|
|
9
8
|
*
|
|
10
9
|
* @example getUnixDay() // "29"
|
|
11
|
-
* @example getUnixDay() // "" (on failure)
|
|
12
10
|
*/
|
|
13
11
|
export declare function getUnixDay(): string;
|
|
@@ -4,21 +4,14 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
4
4
|
*
|
|
5
5
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
6
6
|
* - Returns zero-padded string to 2 digits.
|
|
7
|
-
* - Returns "" on failure.
|
|
8
7
|
*
|
|
9
|
-
* @returns current day string (zero-padded to 2 digits)
|
|
8
|
+
* @returns current day string (zero-padded to 2 digits)
|
|
10
9
|
*
|
|
11
10
|
* @example getUnixDay() // "29"
|
|
12
|
-
* @example getUnixDay() // "" (on failure)
|
|
13
11
|
*/
|
|
14
12
|
export function getUnixDay() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.padStart(2, "0");
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return "";
|
|
23
|
-
}
|
|
13
|
+
return Temporal.Now.instant()
|
|
14
|
+
.toZonedDateTimeISO("UTC")
|
|
15
|
+
.day.toString()
|
|
16
|
+
.padStart(2, "0");
|
|
24
17
|
}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
5
5
|
* - Returns zero-padded string to 2 digits.
|
|
6
|
-
* - Returns "" on failure.
|
|
7
6
|
*
|
|
8
|
-
* @returns current hour string (zero-padded to 2 digits)
|
|
7
|
+
* @returns current hour string (zero-padded to 2 digits)
|
|
9
8
|
*
|
|
10
9
|
* @example getUnixHour() // "00"
|
|
11
|
-
* @example getUnixHour() // "" (on failure)
|
|
12
10
|
*/
|
|
13
11
|
export declare function getUnixHour(): string;
|
|
@@ -4,21 +4,14 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
4
4
|
*
|
|
5
5
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
6
6
|
* - Returns zero-padded string to 2 digits.
|
|
7
|
-
* - Returns "" on failure.
|
|
8
7
|
*
|
|
9
|
-
* @returns current hour string (zero-padded to 2 digits)
|
|
8
|
+
* @returns current hour string (zero-padded to 2 digits)
|
|
10
9
|
*
|
|
11
10
|
* @example getUnixHour() // "00"
|
|
12
|
-
* @example getUnixHour() // "" (on failure)
|
|
13
11
|
*/
|
|
14
12
|
export function getUnixHour() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.padStart(2, "0");
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return "";
|
|
23
|
-
}
|
|
13
|
+
return Temporal.Now.instant()
|
|
14
|
+
.toZonedDateTimeISO("UTC")
|
|
15
|
+
.hour.toString()
|
|
16
|
+
.padStart(2, "0");
|
|
24
17
|
}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
5
5
|
* - Returns zero-padded string to 3 digits.
|
|
6
|
-
* - Returns "" on failure.
|
|
7
6
|
*
|
|
8
|
-
* @returns current microsecond string (zero-padded to 3 digits)
|
|
7
|
+
* @returns current microsecond string (zero-padded to 3 digits)
|
|
9
8
|
*
|
|
10
9
|
* @example getUnixMicrosecond() // "456"
|
|
11
|
-
* @example getUnixMicrosecond() // "" (on failure)
|
|
12
10
|
*/
|
|
13
11
|
export declare function getUnixMicrosecond(): string;
|
|
@@ -4,20 +4,13 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
4
4
|
*
|
|
5
5
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
6
6
|
* - Returns zero-padded string to 3 digits.
|
|
7
|
-
* - Returns "" on failure.
|
|
8
7
|
*
|
|
9
|
-
* @returns current microsecond string (zero-padded to 3 digits)
|
|
8
|
+
* @returns current microsecond string (zero-padded to 3 digits)
|
|
10
9
|
*
|
|
11
10
|
* @example getUnixMicrosecond() // "456"
|
|
12
|
-
* @example getUnixMicrosecond() // "" (on failure)
|
|
13
11
|
*/
|
|
14
12
|
export function getUnixMicrosecond() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
.padStart(3, "0");
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return "";
|
|
22
|
-
}
|
|
13
|
+
return (Temporal.Now.instant().toZonedDateTimeISO("UTC").microsecond ?? 0)
|
|
14
|
+
.toString()
|
|
15
|
+
.padStart(3, "0");
|
|
23
16
|
}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Now.instant() converted to UTC zoned date time.
|
|
5
5
|
* - Returns zero-padded string to 3 digits.
|
|
6
|
-
* - Returns "" on failure.
|
|
7
6
|
*
|
|
8
|
-
* @returns current millisecond string (zero-padded to 3 digits)
|
|
7
|
+
* @returns current millisecond string (zero-padded to 3 digits)
|
|
9
8
|
*
|
|
10
9
|
* @example getUnixMillisecond() // "123"
|
|
11
|
-
* @example getUnixMillisecond() // "" (on failure)
|
|
12
10
|
*/
|
|
13
11
|
export declare function getUnixMillisecond(): string;
|