@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
|
@@ -24,8 +24,10 @@ export declare function parseDayOfWeekFromUnix(value: number | string, options?:
|
|
|
24
24
|
*/
|
|
25
25
|
epochUnit?: UnixUnit;
|
|
26
26
|
/**
|
|
27
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
28
|
-
*
|
|
27
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
28
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
29
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
30
|
+
* `null`.
|
|
29
31
|
*
|
|
30
32
|
* @defaultValue `"UTC"`
|
|
31
33
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { unixWallClock } from "../../internal/unixWallClock.js";
|
|
2
2
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
3
|
/**
|
|
4
4
|
* Return the day of week (1-7) from a unix epoch value.
|
|
@@ -21,7 +21,7 @@ export function parseDayOfWeekFromUnix(value, options) {
|
|
|
21
21
|
if (!isOptionsArgument(options)) {
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return unixWallClock(value, options)?.dayOfWeek ?? null;
|
|
25
25
|
}
|
|
26
26
|
catch {
|
|
27
27
|
// Never throws (Core Rule 3): a hostile
|
|
@@ -23,8 +23,10 @@ export declare function parseHourFromUnix(value: number | string, options?: {
|
|
|
23
23
|
*/
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
27
|
-
*
|
|
26
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
27
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
28
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
29
|
+
* `""`.
|
|
28
30
|
*
|
|
29
31
|
* @defaultValue `"UTC"`
|
|
30
32
|
*/
|
|
@@ -23,8 +23,10 @@ export declare function parseMicrosecondFromUnix(value: number | string, options
|
|
|
23
23
|
*/
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
27
|
-
*
|
|
26
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
27
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
28
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
29
|
+
* `""`.
|
|
28
30
|
*
|
|
29
31
|
* @defaultValue `"UTC"`
|
|
30
32
|
*/
|
|
@@ -23,8 +23,10 @@ export declare function parseMillisecondFromUnix(value: number | string, options
|
|
|
23
23
|
*/
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
27
|
-
*
|
|
26
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
27
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
28
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
29
|
+
* `""`.
|
|
28
30
|
*
|
|
29
31
|
* @defaultValue `"UTC"`
|
|
30
32
|
*/
|
|
@@ -23,8 +23,10 @@ export declare function parseMinuteFromUnix(value: number | string, options?: {
|
|
|
23
23
|
*/
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
27
|
-
*
|
|
26
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
27
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
28
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
29
|
+
* `""`.
|
|
28
30
|
*
|
|
29
31
|
* @defaultValue `"UTC"`
|
|
30
32
|
*/
|
|
@@ -24,8 +24,10 @@ export declare function parseMonthFromUnix(value: number | string, options?: {
|
|
|
24
24
|
*/
|
|
25
25
|
epochUnit?: UnixUnit;
|
|
26
26
|
/**
|
|
27
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
28
|
-
*
|
|
27
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
28
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
29
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
30
|
+
* `""`.
|
|
29
31
|
*
|
|
30
32
|
* @defaultValue `"UTC"`
|
|
31
33
|
*/
|
|
@@ -24,8 +24,10 @@ export declare function parseNanosecondFromUnix(value: number | string, options?
|
|
|
24
24
|
*/
|
|
25
25
|
epochUnit?: UnixUnit;
|
|
26
26
|
/**
|
|
27
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
28
|
-
*
|
|
27
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
28
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
29
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
30
|
+
* `""`.
|
|
29
31
|
*
|
|
30
32
|
* @defaultValue `"UTC"`
|
|
31
33
|
*/
|
|
@@ -23,8 +23,10 @@ export declare function parseSecondFromUnix(value: number | string, options?: {
|
|
|
23
23
|
*/
|
|
24
24
|
epochUnit?: UnixUnit;
|
|
25
25
|
/**
|
|
26
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
27
|
-
*
|
|
26
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
27
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
28
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
29
|
+
* `""`.
|
|
28
30
|
*
|
|
29
31
|
* @defaultValue `"UTC"`
|
|
30
32
|
*/
|
|
@@ -14,6 +14,7 @@ import type { UnixUnit } from "../validate/index.js";
|
|
|
14
14
|
* @example parseTimeFromUnix(-86400, { epochUnit: "seconds", timeZone: "UTC" }) // "00:00:00"
|
|
15
15
|
* @example parseTimeFromUnix("1700000000", { epochUnit: "second" }) // "22:13:20" (digit string, UTC by default)
|
|
16
16
|
* @example parseTimeFromUnix(1.5) // "" (not an integer epoch)
|
|
17
|
+
* @example parseTimeFromUnix(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
|
|
17
18
|
*/
|
|
18
19
|
export declare function parseTimeFromUnix(value: number | string, options?: {
|
|
19
20
|
/**
|
|
@@ -24,8 +25,10 @@ export declare function parseTimeFromUnix(value: number | string, options?: {
|
|
|
24
25
|
*/
|
|
25
26
|
epochUnit?: UnixUnit;
|
|
26
27
|
/**
|
|
27
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
28
|
-
*
|
|
28
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
29
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
30
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
31
|
+
* `""`.
|
|
29
32
|
*
|
|
30
33
|
* @defaultValue `"UTC"`
|
|
31
34
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { unixWallClock } from "../../internal/unixWallClock.js";
|
|
2
2
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
3
|
/**
|
|
4
4
|
* Extract the time portion from a unix epoch value.
|
|
@@ -15,14 +15,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
15
15
|
* @example parseTimeFromUnix(-86400, { epochUnit: "seconds", timeZone: "UTC" }) // "00:00:00"
|
|
16
16
|
* @example parseTimeFromUnix("1700000000", { epochUnit: "second" }) // "22:13:20" (digit string, UTC by default)
|
|
17
17
|
* @example parseTimeFromUnix(1.5) // "" (not an integer epoch)
|
|
18
|
+
* @example parseTimeFromUnix(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
|
|
18
19
|
*/
|
|
19
20
|
export function parseTimeFromUnix(value, options) {
|
|
20
21
|
try {
|
|
21
22
|
if (!isOptionsArgument(options)) {
|
|
22
23
|
return "";
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
-
return
|
|
25
|
+
const wallClock = unixWallClock(value, options);
|
|
26
|
+
return wallClock === null ? "" : wallClock.toPlainTime().toString();
|
|
26
27
|
}
|
|
27
28
|
catch {
|
|
28
29
|
// Never throws (Core Rule 3): a hostile
|
|
@@ -8,7 +8,7 @@ import type { UnixUnit } from "../validate/index.js";
|
|
|
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: ISO 8601 for `weekStartsOn: "monday"`, UTS #35 (minimal days 1) for `"sunday"`, so late-December days can be week 1. |
|
|
14
14
|
* | `day` | Zero-padded 2. |
|
|
@@ -33,6 +33,8 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
|
|
|
33
33
|
* - `microsecond` and `nanosecond` are the 0–999 Temporal fields, zero-padded to 3 digits.
|
|
34
34
|
* - Converts to ZonedDateTime then extracts the unit.
|
|
35
35
|
* - Returns "" for invalid input.
|
|
36
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
37
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
36
38
|
*
|
|
37
39
|
* @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
|
|
38
40
|
* @param unit unit to extract (e.g. "year", "month", "hour")
|
|
@@ -40,6 +42,7 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
|
|
|
40
42
|
* @returns extracted unit value as string, or "" on invalid input
|
|
41
43
|
*
|
|
42
44
|
* @example parseUnitFromUnix(1700000000000, "year") // "2023"
|
|
45
|
+
* @example parseUnitFromUnix(-61996320000000, "year") // "0005" (1 June of year 5)
|
|
43
46
|
* @example parseUnitFromUnix(1700000000, "hour", { epochUnit: "seconds", timeZone: "UTC" }) // "22"
|
|
44
47
|
* @example parseUnitFromUnix(1704067200000, "week", { timeZone: "UTC" }) // "1"
|
|
45
48
|
* @example parseUnitFromUnix(1704067200000, "week", { weekStartsOn: "sunday", timeZone: "UTC" }) // "1"
|
|
@@ -47,6 +50,7 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
|
|
|
47
50
|
* @example parseUnitFromUnix("1709217045123", "hours") // "14" (digit string, plural unit, UTC by default)
|
|
48
51
|
* @example parseUnitFromUnix(1709217045123, "nanosecond") // "000"
|
|
49
52
|
* @example parseUnitFromUnix("", "year") // "" (a blank string is not epoch 0)
|
|
53
|
+
* @example parseUnitFromUnix(45870000, "minute", { timeZone: "-00:44:30" }) // "00" (a stored offset with seconds)
|
|
50
54
|
*/
|
|
51
55
|
export declare function parseUnitFromUnix(value: number | string, unit: PlainNowUnit | Temporal.PluralUnit<Temporal.DateTimeUnit>, options?: {
|
|
52
56
|
/**
|
|
@@ -57,8 +61,10 @@ export declare function parseUnitFromUnix(value: number | string, unit: PlainNow
|
|
|
57
61
|
*/
|
|
58
62
|
epochUnit?: UnixUnit;
|
|
59
63
|
/**
|
|
60
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
61
|
-
*
|
|
64
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
65
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
66
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
67
|
+
* `""`.
|
|
62
68
|
*
|
|
63
69
|
* @defaultValue `"UTC"`
|
|
64
70
|
*/
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
2
2
|
import { resolveWeekStartsOn } from "../../internal/resolveWeekStartsOn.js";
|
|
3
|
-
import {
|
|
3
|
+
import { unixWallClock } from "../../internal/unixWallClock.js";
|
|
4
4
|
import { getWeekNumber } from "../../plain/calculate/getWeekNumber.js";
|
|
5
5
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
6
|
+
import { isoYearString } from "../../internal/isoYearString.js";
|
|
6
7
|
/**
|
|
7
8
|
* Extract a unit from a unix epoch value.
|
|
8
9
|
*
|
|
@@ -11,6 +12,8 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
11
12
|
* - `microsecond` and `nanosecond` are the 0–999 Temporal fields, zero-padded to 3 digits.
|
|
12
13
|
* - Converts to ZonedDateTime then extracts the unit.
|
|
13
14
|
* - Returns "" for invalid input.
|
|
15
|
+
* - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
|
|
16
|
+
* sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
14
17
|
*
|
|
15
18
|
* @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
|
|
16
19
|
* @param unit unit to extract (e.g. "year", "month", "hour")
|
|
@@ -18,6 +21,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
18
21
|
* @returns extracted unit value as string, or "" on invalid input
|
|
19
22
|
*
|
|
20
23
|
* @example parseUnitFromUnix(1700000000000, "year") // "2023"
|
|
24
|
+
* @example parseUnitFromUnix(-61996320000000, "year") // "0005" (1 June of year 5)
|
|
21
25
|
* @example parseUnitFromUnix(1700000000, "hour", { epochUnit: "seconds", timeZone: "UTC" }) // "22"
|
|
22
26
|
* @example parseUnitFromUnix(1704067200000, "week", { timeZone: "UTC" }) // "1"
|
|
23
27
|
* @example parseUnitFromUnix(1704067200000, "week", { weekStartsOn: "sunday", timeZone: "UTC" }) // "1"
|
|
@@ -25,6 +29,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
25
29
|
* @example parseUnitFromUnix("1709217045123", "hours") // "14" (digit string, plural unit, UTC by default)
|
|
26
30
|
* @example parseUnitFromUnix(1709217045123, "nanosecond") // "000"
|
|
27
31
|
* @example parseUnitFromUnix("", "year") // "" (a blank string is not epoch 0)
|
|
32
|
+
* @example parseUnitFromUnix(45870000, "minute", { timeZone: "-00:44:30" }) // "00" (a stored offset with seconds)
|
|
28
33
|
*/
|
|
29
34
|
export function parseUnitFromUnix(value, unit, options) {
|
|
30
35
|
try {
|
|
@@ -32,36 +37,38 @@ export function parseUnitFromUnix(value, unit, options) {
|
|
|
32
37
|
if (!isOptionsArgument(options)) {
|
|
33
38
|
return "";
|
|
34
39
|
}
|
|
35
|
-
const
|
|
40
|
+
const wallClock = unixWallClock(value, options);
|
|
36
41
|
const weekStartsOn = resolveWeekStartsOn(options?.weekStartsOn);
|
|
37
|
-
if (
|
|
42
|
+
if (wallClock === null ||
|
|
43
|
+
typeof unit !== "string" ||
|
|
44
|
+
weekStartsOn === null) {
|
|
38
45
|
return "";
|
|
39
46
|
}
|
|
40
47
|
try {
|
|
41
48
|
switch (resolveDateTimeUnit(unit)) {
|
|
42
49
|
case "year":
|
|
43
|
-
return
|
|
50
|
+
return isoYearString(wallClock.year);
|
|
44
51
|
case "month":
|
|
45
|
-
return
|
|
52
|
+
return wallClock.month.toString().padStart(2, "0");
|
|
46
53
|
case "week": {
|
|
47
|
-
return (getWeekNumber(
|
|
54
|
+
return (getWeekNumber(wallClock.toPlainDate().toString(), weekStartsOn) ?? 0).toString();
|
|
48
55
|
}
|
|
49
56
|
case "day":
|
|
50
|
-
return
|
|
57
|
+
return wallClock.day.toString().padStart(2, "0");
|
|
51
58
|
case "dayOfWeek":
|
|
52
|
-
return
|
|
59
|
+
return wallClock.dayOfWeek.toString();
|
|
53
60
|
case "hour":
|
|
54
|
-
return
|
|
61
|
+
return wallClock.hour.toString().padStart(2, "0");
|
|
55
62
|
case "minute":
|
|
56
|
-
return
|
|
63
|
+
return wallClock.minute.toString().padStart(2, "0");
|
|
57
64
|
case "second":
|
|
58
|
-
return
|
|
65
|
+
return wallClock.second.toString().padStart(2, "0");
|
|
59
66
|
case "millisecond":
|
|
60
|
-
return
|
|
67
|
+
return wallClock.millisecond.toString().padStart(3, "0");
|
|
61
68
|
case "microsecond":
|
|
62
|
-
return
|
|
69
|
+
return wallClock.microsecond.toString().padStart(3, "0");
|
|
63
70
|
case "nanosecond":
|
|
64
|
-
return
|
|
71
|
+
return wallClock.nanosecond.toString().padStart(3, "0");
|
|
65
72
|
default:
|
|
66
73
|
return "";
|
|
67
74
|
}
|
|
@@ -26,8 +26,9 @@ export declare function parseWeekFromUnix(value: number | string, options?: {
|
|
|
26
26
|
*/
|
|
27
27
|
epochUnit?: UnixUnit;
|
|
28
28
|
/**
|
|
29
|
-
* The time zone the date is read in: an IANA name, a UTC offset
|
|
30
|
-
*
|
|
29
|
+
* The time zone the date is read in: an IANA name, a UTC offset (a time zone identifier such as
|
|
30
|
+
* `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what `getTimeZoneOffset`
|
|
31
|
+
* returns), or `"local"` for the system time zone. An unknown zone returns `null`.
|
|
31
32
|
*
|
|
32
33
|
* @defaultValue `"UTC"`
|
|
33
34
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getWeekNumber } from "../../plain/calculate/getWeekNumber.js";
|
|
2
2
|
import { resolveWeekStartsOn } from "../../internal/resolveWeekStartsOn.js";
|
|
3
|
-
import {
|
|
3
|
+
import { unixWallClock } from "../../internal/unixWallClock.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
6
6
|
* Return the week number from a unix epoch value.
|
|
@@ -26,12 +26,12 @@ export function parseWeekFromUnix(value, options) {
|
|
|
26
26
|
if (!isOptionsArgument(options)) {
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
|
-
const
|
|
29
|
+
const wallClock = unixWallClock(value, options);
|
|
30
30
|
const weekStartsOn = resolveWeekStartsOn(options?.weekStartsOn);
|
|
31
|
-
if (
|
|
31
|
+
if (wallClock === null || weekStartsOn === null)
|
|
32
32
|
return null;
|
|
33
33
|
try {
|
|
34
|
-
return getWeekNumber(
|
|
34
|
+
return getWeekNumber(wallClock.toPlainDate().toString(), weekStartsOn);
|
|
35
35
|
}
|
|
36
36
|
catch {
|
|
37
37
|
return null;
|
|
@@ -5,12 +5,15 @@ import type { UnixUnit } from "../validate/index.js";
|
|
|
5
5
|
* - Delegates to {@link parseUnitFromUnix} with unit "year".
|
|
6
6
|
* - `value` is a safe integer or a digit string.
|
|
7
7
|
* - Returns "" for invalid input.
|
|
8
|
+
* - The year is written as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
|
|
9
|
+
* digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
8
10
|
*
|
|
9
11
|
* @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
|
|
10
12
|
* @param options optional: how `value` is read and the zone its wall clock is read in
|
|
11
|
-
* @returns
|
|
13
|
+
* @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
|
|
12
14
|
*
|
|
13
15
|
* @example parseYearFromUnix(1700000000000) // "2023"
|
|
16
|
+
* @example parseYearFromUnix(-61996320000000) // "0005" (1 June of year 5)
|
|
14
17
|
* @example parseYearFromUnix(1704067200000, { epochUnit: "milliseconds", timeZone: "UTC" }) // "2024"
|
|
15
18
|
* @example parseYearFromUnix(-86400, { epochUnit: "seconds" }) // "1969"
|
|
16
19
|
* @example parseYearFromUnix("") // "" (a blank string is not epoch 0)
|
|
@@ -24,8 +27,10 @@ export declare function parseYearFromUnix(value: number | string, options?: {
|
|
|
24
27
|
*/
|
|
25
28
|
epochUnit?: UnixUnit;
|
|
26
29
|
/**
|
|
27
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
28
|
-
*
|
|
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
|
+
* `""`.
|
|
29
34
|
*
|
|
30
35
|
* @defaultValue `"UTC"`
|
|
31
36
|
*/
|
|
@@ -6,12 +6,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
6
6
|
* - Delegates to {@link parseUnitFromUnix} with unit "year".
|
|
7
7
|
* - `value` is a safe integer or a digit string.
|
|
8
8
|
* - Returns "" for invalid input.
|
|
9
|
+
* - The year is written as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
|
|
10
|
+
* digits outside 0000–9999 (`"+010000"`, `"-000005"`).
|
|
9
11
|
*
|
|
10
12
|
* @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
|
|
11
13
|
* @param options optional: how `value` is read and the zone its wall clock is read in
|
|
12
|
-
* @returns
|
|
14
|
+
* @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
|
|
13
15
|
*
|
|
14
16
|
* @example parseYearFromUnix(1700000000000) // "2023"
|
|
17
|
+
* @example parseYearFromUnix(-61996320000000) // "0005" (1 June of year 5)
|
|
15
18
|
* @example parseYearFromUnix(1704067200000, { epochUnit: "milliseconds", timeZone: "UTC" }) // "2024"
|
|
16
19
|
* @example parseYearFromUnix(-86400, { epochUnit: "seconds" }) // "1969"
|
|
17
20
|
* @example parseYearFromUnix("") // "" (a blank string is not epoch 0)
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* import { isValidUnixUnit } from "@northguild/gmt/unix";
|
|
16
16
|
* isValidUnixUnit("milliseconds"); // true
|
|
17
17
|
*/
|
|
18
|
-
export type UnixUnit = "seconds" | "
|
|
18
|
+
export type UnixUnit = "seconds" | "milliseconds" | "second" | "millisecond";
|
|
19
19
|
/**
|
|
20
20
|
* Return true when `unit` is a valid UnixUnit.
|
|
21
21
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { readDurationUnits, resolveOverflow } from "../../internal/index.js";
|
|
4
4
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
5
5
|
import { isValidUtc } from "../validate/isValidUtc.js";
|
|
6
6
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
@@ -26,17 +26,14 @@ export function addUtc(value, units, options) {
|
|
|
26
26
|
return "";
|
|
27
27
|
}
|
|
28
28
|
const validUtc = isValidUtc(value);
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
Object.keys(units).every(isValidDateTimeDurationUnit);
|
|
32
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
33
|
-
if (!validUtc || !validUnits || !validAmounts) {
|
|
29
|
+
const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
|
|
30
|
+
if (!validUtc || amounts === null) {
|
|
34
31
|
return "";
|
|
35
32
|
}
|
|
36
33
|
try {
|
|
37
34
|
const instant = Temporal.Instant.from(value);
|
|
38
35
|
const zoned = instant.toZonedDateTimeISO("UTC");
|
|
39
|
-
const result = zoned.add(
|
|
36
|
+
const result = zoned.add(amounts, {
|
|
40
37
|
overflow: resolveOverflow(options?.overflow),
|
|
41
38
|
});
|
|
42
39
|
return result.toInstant().toString();
|
|
@@ -9,8 +9,20 @@ import type { Overflow } from "../../types/index.js";
|
|
|
9
9
|
* `addUtc()` calls field-by-field — see `setDate`'s doc for why order-independent field
|
|
10
10
|
* resolution matters.
|
|
11
11
|
* - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
|
|
12
|
-
* `millisecond`, `microsecond
|
|
13
|
-
*
|
|
12
|
+
* `millisecond`, `microsecond` and/or `nanosecond`; omitted fields keep their current value. An
|
|
13
|
+
* object with no field set, such as `{}` or `{ year: undefined }`, is a no-op.
|
|
14
|
+
* - Values are not converted: `monthCode` must be a string and every other field an integer number.
|
|
15
|
+
* `null`, a numeric string, a boolean or a fraction returns "", where Temporal would convert or
|
|
16
|
+
* truncate it. A bigint, `NaN` or an infinity returns "" too. A number too large for its
|
|
17
|
+
* field follows `overflow`. A month or day below 1, or a date outside Temporal's range, returns
|
|
18
|
+
* "".
|
|
19
|
+
* - An own key that is not one of these fields, such as a misspelt `yaer`, returns "". So does an
|
|
20
|
+
* era, an `offset`, or a `calendar` or `timeZone` property, whether own, inherited or a getter. A
|
|
21
|
+
* field is read with a property get, as Temporal reads it, so an inherited or getter field is
|
|
22
|
+
* set.
|
|
23
|
+
* - A Temporal date or time object returns "", as Temporal's `with` refuses one. One whose
|
|
24
|
+
* prototype has been replaced with `Object.prototype`, `null` or `Function.prototype` sets
|
|
25
|
+
* nothing instead.
|
|
14
26
|
* - There are no `disambiguation` or `offset` options (removed in 1.16.0): a UTC instant's wall
|
|
15
27
|
* clock is never ambiguous and its offset is always +00:00, so neither had anything to act on.
|
|
16
28
|
* - Returns "" for invalid input.
|
|
@@ -24,9 +36,10 @@ import type { Overflow } from "../../types/index.js";
|
|
|
24
36
|
* @example setUtc("2024-01-31T12:00:00Z", { month: 2 }) // "2024-02-29T12:00:00Z" (constrain clamps to the last valid day)
|
|
25
37
|
* @example setUtc("2024-01-31T12:00:00Z", { month: 2 }, { overflow: "reject" }) // ""
|
|
26
38
|
* @example setUtc("2024-03-10T12:00:00Z", {}) // "2024-03-10T12:00:00Z" (empty fields object is a no-op)
|
|
39
|
+
* @example setUtc("2024-03-10T12:00:00Z", { hour: "9" }) // "" (not converted)
|
|
27
40
|
* @example setUtc("invalid", { hour: 9 }) // ""
|
|
28
41
|
*/
|
|
29
|
-
export declare function setUtc(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset">, options?: {
|
|
42
|
+
export declare function setUtc(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset" | "era" | "eraYear">, options?: {
|
|
30
43
|
/**
|
|
31
44
|
* What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
|
|
32
45
|
* so `month: 2` on Jan 31 is Feb 29/28 (TC39 Temporal); `"reject"` returns `""`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { resolveOverflow } from "../../internal/index.js";
|
|
2
|
+
import { DATE_TIME_FIELDS, readSetFields, resolveOverflow, } from "../../internal/index.js";
|
|
3
3
|
import { isValidUtc } from "../validate/isValidUtc.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
@@ -11,8 +11,20 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
11
11
|
* `addUtc()` calls field-by-field — see `setDate`'s doc for why order-independent field
|
|
12
12
|
* resolution matters.
|
|
13
13
|
* - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
|
|
14
|
-
* `millisecond`, `microsecond
|
|
15
|
-
*
|
|
14
|
+
* `millisecond`, `microsecond` and/or `nanosecond`; omitted fields keep their current value. An
|
|
15
|
+
* object with no field set, such as `{}` or `{ year: undefined }`, is a no-op.
|
|
16
|
+
* - Values are not converted: `monthCode` must be a string and every other field an integer number.
|
|
17
|
+
* `null`, a numeric string, a boolean or a fraction returns "", where Temporal would convert or
|
|
18
|
+
* truncate it. A bigint, `NaN` or an infinity returns "" too. A number too large for its
|
|
19
|
+
* field follows `overflow`. A month or day below 1, or a date outside Temporal's range, returns
|
|
20
|
+
* "".
|
|
21
|
+
* - An own key that is not one of these fields, such as a misspelt `yaer`, returns "". So does an
|
|
22
|
+
* era, an `offset`, or a `calendar` or `timeZone` property, whether own, inherited or a getter. A
|
|
23
|
+
* field is read with a property get, as Temporal reads it, so an inherited or getter field is
|
|
24
|
+
* set.
|
|
25
|
+
* - A Temporal date or time object returns "", as Temporal's `with` refuses one. One whose
|
|
26
|
+
* prototype has been replaced with `Object.prototype`, `null` or `Function.prototype` sets
|
|
27
|
+
* nothing instead.
|
|
16
28
|
* - There are no `disambiguation` or `offset` options (removed in 1.16.0): a UTC instant's wall
|
|
17
29
|
* clock is never ambiguous and its offset is always +00:00, so neither had anything to act on.
|
|
18
30
|
* - Returns "" for invalid input.
|
|
@@ -26,6 +38,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
26
38
|
* @example setUtc("2024-01-31T12:00:00Z", { month: 2 }) // "2024-02-29T12:00:00Z" (constrain clamps to the last valid day)
|
|
27
39
|
* @example setUtc("2024-01-31T12:00:00Z", { month: 2 }, { overflow: "reject" }) // ""
|
|
28
40
|
* @example setUtc("2024-03-10T12:00:00Z", {}) // "2024-03-10T12:00:00Z" (empty fields object is a no-op)
|
|
41
|
+
* @example setUtc("2024-03-10T12:00:00Z", { hour: "9" }) // "" (not converted)
|
|
29
42
|
* @example setUtc("invalid", { hour: 9 }) // ""
|
|
30
43
|
*/
|
|
31
44
|
export function setUtc(value, fields, options) {
|
|
@@ -39,11 +52,12 @@ export function setUtc(value, fields, options) {
|
|
|
39
52
|
try {
|
|
40
53
|
const instant = Temporal.Instant.from(value);
|
|
41
54
|
const zoned = instant.toZonedDateTimeISO("UTC");
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
const set = readSetFields(fields, DATE_TIME_FIELDS);
|
|
56
|
+
if (set === null)
|
|
57
|
+
return "";
|
|
58
|
+
// Only the values readSetFields checked reach Temporal. An empty result sets nothing: a
|
|
59
|
+
// no-op here, where Temporal's with() would throw.
|
|
60
|
+
const result = Object.keys(set).length === 0 ? zoned : zoned.with(set, { overflow });
|
|
47
61
|
return result.toInstant().toString();
|
|
48
62
|
}
|
|
49
63
|
catch {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { readDurationUnits, resolveOverflow } from "../../internal/index.js";
|
|
4
4
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
5
5
|
import { isValidUtc } from "../validate/index.js";
|
|
6
6
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
@@ -26,17 +26,14 @@ export function subtractUtc(value, units, options) {
|
|
|
26
26
|
return "";
|
|
27
27
|
}
|
|
28
28
|
const validUtc = isValidUtc(value);
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
Object.keys(units).every(isValidDateTimeDurationUnit);
|
|
32
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
33
|
-
if (!validUtc || !validUnits || !validAmounts) {
|
|
29
|
+
const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
|
|
30
|
+
if (!validUtc || amounts === null) {
|
|
34
31
|
return "";
|
|
35
32
|
}
|
|
36
33
|
try {
|
|
37
34
|
const instant = Temporal.Instant.from(value);
|
|
38
35
|
const zoned = instant.toZonedDateTimeISO("UTC");
|
|
39
|
-
const result = zoned.subtract(
|
|
36
|
+
const result = zoned.subtract(amounts, {
|
|
40
37
|
overflow: resolveOverflow(options?.overflow),
|
|
41
38
|
});
|
|
42
39
|
return result.toInstant().toString();
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Convert a UTC datetime string to a plain date string in the format "YYYY-MM-DD".
|
|
3
3
|
*
|
|
4
4
|
* - Converts to the `timeZone` option's zone before extracting the date.
|
|
5
|
+
* - A year outside 0000–9999 is written with a sign and six digits (`+010000`, `-000005`), as
|
|
6
|
+
* Temporal writes it, so the result is always a string `isValidDate` accepts.
|
|
5
7
|
* - Returns "" for invalid input.
|
|
6
8
|
*
|
|
7
9
|
* @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
|
|
@@ -11,11 +13,15 @@
|
|
|
11
13
|
* @example convertUtcToPlainDate("2024-02-29T00:00:00Z") // "2024-02-29"
|
|
12
14
|
* @example convertUtcToPlainDate("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "2024-02-28"
|
|
13
15
|
* @example convertUtcToPlainDate("invalid") // ""
|
|
16
|
+
* @example convertUtcToPlainDate("+010000-01-01T00:00:00Z") // "+010000-01-01" (a year past 9999 has a sign and six digits)
|
|
17
|
+
* @example convertUtcToPlainDate("1970-01-01T00:30:00Z", { timeZone: "-00:44:30" }) // "1969-12-31" (a stored offset with seconds)
|
|
14
18
|
*/
|
|
15
19
|
export declare function convertUtcToPlainDate(value: string, options?: {
|
|
16
20
|
/**
|
|
17
|
-
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset
|
|
18
|
-
*
|
|
21
|
+
* The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
|
|
22
|
+
* identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
|
|
23
|
+
* `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
|
|
24
|
+
* `""`.
|
|
19
25
|
*
|
|
20
26
|
* @defaultValue `"UTC"`
|
|
21
27
|
*/
|