@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
|
@@ -4,12 +4,19 @@ description: >
|
|
|
4
4
|
Core date/time basics — get current values, parse components, read ISO week,
|
|
5
5
|
ordinal, quarter and fiscal-period identifiers, format for display, format
|
|
6
6
|
relative time, compare dates, and validate strings/timezones/intervals. Reads
|
|
7
|
-
the
|
|
8
|
-
is a routing pointer, not an API dump.
|
|
7
|
+
the docs site (llms.txt and each page's .md twin) and the installed package's
|
|
8
|
+
JSDoc for API details; this skill is a routing pointer, not an API dump.
|
|
9
9
|
sources:
|
|
10
|
-
- 'northguild/gmt:
|
|
10
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/get-current.mdx'
|
|
11
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/parsing.mdx'
|
|
12
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/formatting.mdx'
|
|
13
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/relative-time.mdx'
|
|
14
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/comparisons.mdx'
|
|
15
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/validation.mdx'
|
|
16
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/zoned-date-operations/calendar-boundaries.mdx'
|
|
11
17
|
- 'northguild/gmt:packages/gmt/src/plain/get/index.ts'
|
|
12
18
|
- 'northguild/gmt:packages/gmt/src/plain/parse/index.ts'
|
|
19
|
+
- 'northguild/gmt:packages/gmt/src/types/two-digit-year.ts'
|
|
13
20
|
- 'northguild/gmt:packages/gmt/src/plain/format/index.ts'
|
|
14
21
|
- 'northguild/gmt:packages/gmt/src/plain/locale/index.ts'
|
|
15
22
|
- 'northguild/gmt:packages/gmt/src/plain/compare/index.ts'
|
|
@@ -17,6 +24,9 @@ sources:
|
|
|
17
24
|
- 'northguild/gmt:packages/gmt/src/zoned/get/index.ts'
|
|
18
25
|
- 'northguild/gmt:packages/gmt/src/zoned/format/index.ts'
|
|
19
26
|
- 'northguild/gmt:packages/gmt/src/zoned/validate/index.ts'
|
|
27
|
+
- 'northguild/gmt:packages/gmt/src/zoned/parse/index.ts'
|
|
28
|
+
- 'northguild/gmt:packages/gmt/src/utc/parse/index.ts'
|
|
29
|
+
- 'northguild/gmt:packages/gmt/src/utc/validate/index.ts'
|
|
20
30
|
- 'northguild/gmt:packages/gmt/src/unix/get/index.ts'
|
|
21
31
|
- 'northguild/gmt:packages/gmt/src/utc/get/index.ts'
|
|
22
32
|
- 'northguild/gmt:packages/gmt/src/calendar/calculate/index.ts'
|
|
@@ -24,7 +34,7 @@ sources:
|
|
|
24
34
|
metadata:
|
|
25
35
|
type: core
|
|
26
36
|
library: '@northguild/gmt'
|
|
27
|
-
library_version: '1.
|
|
37
|
+
library_version: '1.19.0'
|
|
28
38
|
---
|
|
29
39
|
|
|
30
40
|
# GMT Basics
|
|
@@ -52,26 +62,36 @@ input before you act on it.
|
|
|
52
62
|
`false` for booleans, `[]` for arrays. Always check before using. This holds
|
|
53
63
|
for a `null` or wrong-typed argument too (`addDate(x, null)` is `""`), so a
|
|
54
64
|
`try`/`catch` around a GMT call is dead code.
|
|
55
|
-
3. **Read the
|
|
56
|
-
signatures, locale matrices, and code examples, read
|
|
57
|
-
`
|
|
65
|
+
3. **Read the docs site.** This skill is a routing pointer. For full API
|
|
66
|
+
signatures, locale matrices, and code examples, read these:
|
|
67
|
+
- `https://gmt-dox.northguild.workers.dev/llms.txt` is the map of every docs page.
|
|
68
|
+
- Each page has a `.md` twin that holds its text, for example
|
|
69
|
+
`https://gmt-dox.northguild.workers.dev/guides/core-date-operations/parsing.md`.
|
|
70
|
+
- The JSDoc of the function you intend to call ships in the installed
|
|
71
|
+
package: `node_modules/@northguild/gmt/dist/**/*.d.ts`.
|
|
58
72
|
|
|
59
73
|
## Key functions
|
|
60
74
|
|
|
61
75
|
- **Current values**: `getNow`, `getToday`, `getUtcNow`, `getUnixNow`,
|
|
62
76
|
`getSystemTimeZone`, `getTimeZones`
|
|
63
77
|
- **Parsing**: `parseYearFromDate`, `parseMonthFromDate`,
|
|
64
|
-
`parseDateTimeWithPattern`, `parseRfc3339`, `
|
|
78
|
+
`parseDateTimeWithPattern`, `parseRfc3339`, `parseRfc2822`,
|
|
79
|
+
`parseHttpDate`, `parseSqlDateTime`
|
|
65
80
|
- **Calendar identifiers**: `getIsoWeekDate`, `getOrdinalDate`, `getQuarter`,
|
|
66
81
|
`getFiscalPeriod`
|
|
67
82
|
- **Formatting**: `formatDate`, `formatTime`, `formatDateTime`,
|
|
68
|
-
`formatRelativeDate`, `formatCalendar`, `formatRfc3339`
|
|
83
|
+
`formatRelativeDate`, `formatCalendar`, `formatRfc3339`, `formatRfc2822`,
|
|
84
|
+
`formatHttpDate`, `formatSqlDateTime`
|
|
69
85
|
- **Locale names**: `getLocaleMonthNames`, `getLocaleWeekdayNames`,
|
|
70
86
|
`getLocaleMeridiems`, `getLocaleEraNames`
|
|
71
87
|
- **Comparison**: `isAfterDate`, `isBeforeDate`, `areDatesEqual`,
|
|
72
88
|
`areDatesEqualBy`, `isWeekend`, `isBusinessDay`, `nextWeekday`
|
|
73
89
|
- **Validation**: `isValidDate`, `isValidTime`, `isValidTimeZone`,
|
|
74
90
|
`isValidZonedDateTime`, `isValidDateInterval`, `isValidFiscalPattern`
|
|
91
|
+
- **Interchange-format validation**: `isValidRfc3339DateTime`,
|
|
92
|
+
`isValidRfc2822DateTime`, `isValidHttpDate`, `isValidSqlDateTime`
|
|
93
|
+
- **UTC timestamp validation**: `isValidUtcTimestamp` (a UTC instant written
|
|
94
|
+
`YYYY-MM-DDTHH:MM:SS[.f]Z` and nothing else; it has no parser)
|
|
75
95
|
|
|
76
96
|
## Common pitfalls
|
|
77
97
|
|
|
@@ -82,21 +102,41 @@ input before you act on it.
|
|
|
82
102
|
second to hour, the others second to year. Any other unit returns `""`.
|
|
83
103
|
`roundingMethod` is `"floor"`, `"ceil"` or `"round"`: any other value returns `""`.
|
|
84
104
|
- In a `parse*WithPattern` pattern, `''` is one literal quote, inside or outside
|
|
85
|
-
quoted text (UTS #35): `"
|
|
86
|
-
|
|
105
|
+
quoted text (UTS #35), and not an empty separator: `"''yyyy-MM-dd''"` reads
|
|
106
|
+
`"'2024-01-15'"`. Write adjacent fields with nothing between them, as in `"yyyyMMdd"`.
|
|
107
|
+
- A `yy` token in a `parse*WithPattern` pattern needs the caller's hundred-year window:
|
|
108
|
+
`{ yearWindow: 2000 }` reads `"03/15/24"` against `"MM/dd/yy"` as `"2024-03-15"`, and
|
|
109
|
+
`"rolling"` is the hundred years around the current UTC year. A `yy` pattern with no
|
|
110
|
+
`yearWindow` returns `""`; a pattern with no `yy` never reads the option.
|
|
87
111
|
- `getZonedNow` reads `smallestUnit` only, and writes milliseconds when it is
|
|
88
112
|
omitted or `undefined`. The string always carries the offset and the zone.
|
|
89
|
-
- `parseDateWithPattern`, `parseRfc2822` and `
|
|
113
|
+
- `parseDateWithPattern`, `parseRfc2822` and `parseHttpDate` return `""` on
|
|
90
114
|
shape-valid-but-unreal dates such as 31 February (regex only proves shape;
|
|
91
115
|
Temporal validates the real value). Parsers reject; only arithmetic clamps.
|
|
92
116
|
- `parseRfc2822` reads everything RFC 5322 says a receiver must: comments,
|
|
93
117
|
folding whitespace, any case, two-digit years and zone names such as `EST`
|
|
94
|
-
(an unknown name reads as `+00:00`). `
|
|
118
|
+
(an unknown name reads as `+00:00`). `parseHttpDate` reads all three HTTP-date
|
|
95
119
|
forms, including `rfc850-date` and `asctime-date`. Both return `""` when the
|
|
96
120
|
day name contradicts the date (`"Sat, 15 Mar 2024 …"`), so do not synthesise
|
|
97
121
|
a day name; omit it. The `rfc2822DateTime` and `httpDate` regexes stay strict
|
|
98
122
|
and match only what GMT writes, so do not use them to pre-filter parser input.
|
|
99
|
-
-
|
|
123
|
+
- To check an interchange string, call its validator, not its regex.
|
|
124
|
+
`isValidRfc3339DateTime`, `isValidRfc2822DateTime`, `isValidHttpDate` and
|
|
125
|
+
`isValidSqlDateTime` are each true exactly when the parser returns a value.
|
|
126
|
+
A regex proves shape only: `rfc3339DateTime.test("2023-02-29T10:00:00Z")`
|
|
127
|
+
is `true` and `isValidRfc3339DateTime` returns `false` for it.
|
|
128
|
+
- `isValidUtcTimestamp` matches no parser: it is a narrower `isValidUtc`. It is true
|
|
129
|
+
only for a real UTC instant written `YYYY-MM-DDTHH:MM:SS[.f]Z`: a four-digit year
|
|
130
|
+
`0000` to `9999`, upper-case `T` and `Z`, seconds, an optional dot fraction of one to
|
|
131
|
+
nine digits, and nothing after the `Z`. Use it for a string headed for storage or for
|
|
132
|
+
a reader that is not Temporal. `isValidUtc` also accepts a time without seconds, a
|
|
133
|
+
comma before the fraction, an expanded `±YYYYYY` year and RFC 9557 annotations
|
|
134
|
+
(`"2026-10-06T12:00:00Z[Europe/Paris]"`); all four are `false` here. A numeric offset,
|
|
135
|
+
`+00:00` included, is `false` too: `isValidRfc3339DateTime` checks the whole RFC 3339
|
|
136
|
+
grammar, with the same two GMT limits (no second `60`, at most nine fraction digits).
|
|
137
|
+
The check is on the spelling and the instant. A reader's own range and precision
|
|
138
|
+
still apply.
|
|
139
|
+
- `formatRfc2822`, `formatHttpDate` and `formatRfc3339` return `""` for a year their
|
|
100
140
|
grammar cannot hold (before 0000, or after 9999 for RFC 3339 and HTTP).
|
|
101
141
|
`formatRfc3339` writes a sub-minute historical offset as the same instant at
|
|
102
142
|
`+00:00`. Use Temporal's `toString()` when you need any year.
|
|
@@ -132,5 +172,7 @@ input before you act on it.
|
|
|
132
172
|
|
|
133
173
|
## References
|
|
134
174
|
|
|
135
|
-
- [
|
|
175
|
+
- [Docs map for agents (llms.txt)](https://gmt-dox.northguild.workers.dev/llms.txt)
|
|
176
|
+
- [API reference](https://gmt-dox.northguild.workers.dev/reference/)
|
|
177
|
+
- [Core date operations guides index](https://gmt-dox.northguild.workers.dev/guides/core-date-operations/)
|
|
136
178
|
- [Core date operations guides](/guides/core-date-operations/get-current/)
|
|
@@ -4,11 +4,16 @@ description: >
|
|
|
4
4
|
Application integration patterns — stable cache keys, router/query params,
|
|
5
5
|
table-sort keys, nanosecond timestamps across JSON and storage boundaries,
|
|
6
6
|
foreign epoch bridges (NTP, FILETIME, .NET ticks, Excel, PostgreSQL), and lint
|
|
7
|
-
package selection (ESLint, Biome, Oxlint). Reads the
|
|
8
|
-
|
|
9
|
-
pointer, not
|
|
7
|
+
package selection (ESLint, Biome, Oxlint). Reads the docs site (llms.txt and
|
|
8
|
+
each page's .md twin) and the installed package's JSDoc for API details, and
|
|
9
|
+
the lint-package READMEs for lint setup; this skill is a routing pointer, not
|
|
10
|
+
an API dump.
|
|
10
11
|
sources:
|
|
11
|
-
- 'northguild/gmt:
|
|
12
|
+
- 'northguild/gmt:apps/dox/src/content/docs/install.mdx'
|
|
13
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/integration/app-integration.mdx'
|
|
14
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/integration/linting.mdx'
|
|
15
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/nanosecond-precision.mdx'
|
|
16
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/conversion/foreign-epoch-bridges.mdx'
|
|
12
17
|
- 'northguild/gmt:packages/gmt/src/zoned/validate/index.ts'
|
|
13
18
|
- 'northguild/gmt:packages/gmt/src/precision/convert/index.ts'
|
|
14
19
|
- 'northguild/gmt:packages/gmt/src/precision/format/index.ts'
|
|
@@ -17,7 +22,7 @@ sources:
|
|
|
17
22
|
metadata:
|
|
18
23
|
type: composition
|
|
19
24
|
library: '@northguild/gmt'
|
|
20
|
-
library_version: '1.
|
|
25
|
+
library_version: '1.19.0'
|
|
21
26
|
---
|
|
22
27
|
|
|
23
28
|
# GMT Integration
|
|
@@ -84,9 +89,15 @@ which lint package to install for Date-ban enforcement.
|
|
|
84
89
|
names the instant the zone gives.
|
|
85
90
|
6. **Lint packages are toolchain-specific, not mutually exclusive.** Recommend
|
|
86
91
|
only the one matching the project's existing linter; do not force all three.
|
|
87
|
-
7. **Read the
|
|
88
|
-
guidance, read
|
|
89
|
-
|
|
92
|
+
7. **Read the docs site and the lint README.** This skill is a routing pointer.
|
|
93
|
+
For full integration guidance, read these:
|
|
94
|
+
- `https://gmt-dox.northguild.workers.dev/llms.txt` is the map of every docs page.
|
|
95
|
+
- Each page has a `.md` twin that holds its text, for example
|
|
96
|
+
`https://gmt-dox.northguild.workers.dev/guides/integration/app-integration.md`.
|
|
97
|
+
- The JSDoc ships in the installed package:
|
|
98
|
+
`node_modules/@northguild/gmt/dist/**/*.d.ts`.
|
|
99
|
+
- For lint setup, read the matching `@northguild/gmt-eslint` / `gmt-oxlint` /
|
|
100
|
+
`gmt-biome` README.
|
|
90
101
|
|
|
91
102
|
## Lint package selection
|
|
92
103
|
|
|
@@ -119,6 +130,10 @@ the pattern.
|
|
|
119
130
|
|
|
120
131
|
## References
|
|
121
132
|
|
|
122
|
-
- [
|
|
133
|
+
- [Docs map for agents (llms.txt)](https://gmt-dox.northguild.workers.dev/llms.txt)
|
|
134
|
+
- [Install](https://gmt-dox.northguild.workers.dev/install/)
|
|
135
|
+
- [App integration guide](https://gmt-dox.northguild.workers.dev/guides/integration/app-integration/)
|
|
136
|
+
- [Nanosecond precision guide](https://gmt-dox.northguild.workers.dev/guides/core-date-operations/nanosecond-precision/)
|
|
137
|
+
- [Foreign epoch bridges guide](https://gmt-dox.northguild.workers.dev/guides/conversion/foreign-epoch-bridges/)
|
|
123
138
|
- [Lint Package Selection guide](/guides/integration/linting/)
|
|
124
139
|
- [Core Rules](/core-rules/)
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gmt-timezone
|
|
3
3
|
description: >
|
|
4
|
-
Timezone-aware operations — zoned now, formatting zoned
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
recurringWindows, operatingIntervals, isOpenAt,
|
|
16
|
-
operatingTimeBetween, addOperatingTime), and daylight
|
|
17
|
-
(isInDaylightSaving, hasDaylightSaving).
|
|
4
|
+
Timezone-aware operations — zoned now, zoned formatting, plain↔zoned↔UTC↔Unix
|
|
5
|
+
conversion, DST disambiguation, toOffsetInstant, classifyLocal/resolveLocal,
|
|
6
|
+
real boundaries (startOfZoned/endOfZoned/startOfUnix/endOfUnix), hours in a
|
|
7
|
+
local day, floorToZone/bucketRange, calendar-annotated strings, transport legs
|
|
8
|
+
(transitTime, etaAtZone, dwellTime, crossingTime, scheduleDelivery), cut-offs
|
|
9
|
+
(cutoffAt, cutoffSchedule, isPastCutoff, timeToCutoff), punctuality
|
|
10
|
+
(scheduleDeviation, classifyPunctuality, punctualityRate, bestAvailable,
|
|
11
|
+
estimateDrift over PLN/EST/REQ/ACT, nextDeparture), free time (freeTimeExpiry,
|
|
12
|
+
chargeableDays, demurrageClock), billingTimeline, bolTimestamp, multimodalETA,
|
|
13
|
+
EDI timestamps (parseEdifactDateTime, parseX12DateAndTime, x12TimeCodeOffset,
|
|
14
|
+
parseEpcisEvent, classify*/format*/isValid*), operating hours
|
|
15
|
+
(OperatingSchedule, recurringWindows, operatingIntervals, isOpenAt,
|
|
16
|
+
nextOpenAt, nextCloseAt, operatingTimeBetween, addOperatingTime), and daylight
|
|
17
|
+
time (isInDaylightSaving, hasDaylightSaving).
|
|
18
18
|
sources:
|
|
19
|
-
- 'northguild/gmt:
|
|
19
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/zoned-date-operations/*.mdx'
|
|
20
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/concepts/dst-disambiguation.md'
|
|
21
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/operating-hours.mdx'
|
|
22
|
+
- 'northguild/gmt:apps/dox/src/content/docs/guides/industries/*.mdx'
|
|
20
23
|
- 'northguild/gmt:packages/gmt/src/zoned/get/index.ts'
|
|
21
24
|
- 'northguild/gmt:packages/gmt/src/zoned/format/index.ts'
|
|
22
25
|
- 'northguild/gmt:packages/gmt/src/zoned/compare/index.ts'
|
|
@@ -31,6 +34,7 @@ sources:
|
|
|
31
34
|
- 'northguild/gmt:packages/gmt/src/utc/get/index.ts'
|
|
32
35
|
- 'northguild/gmt:packages/gmt/src/utc/convert/index.ts'
|
|
33
36
|
- 'northguild/gmt:packages/gmt/src/instant/convert/index.ts'
|
|
37
|
+
- 'northguild/gmt:packages/gmt/src/instant/validate/index.ts'
|
|
34
38
|
- 'northguild/gmt:packages/gmt/src/calendar/calculate/index.ts'
|
|
35
39
|
- 'northguild/gmt:packages/gmt/src/calendar/validate/index.ts'
|
|
36
40
|
- 'northguild/gmt:packages/gmt/src/calendar/hours/index.ts'
|
|
@@ -40,10 +44,16 @@ sources:
|
|
|
40
44
|
- 'northguild/gmt:packages/gmt/src/transport/compare/index.ts'
|
|
41
45
|
- 'northguild/gmt:packages/gmt/src/transport/convert/index.ts'
|
|
42
46
|
- 'northguild/gmt:packages/gmt/src/intermodal/calculate/index.ts'
|
|
47
|
+
- 'northguild/gmt:packages/gmt/src/intermodal/format/index.ts'
|
|
48
|
+
- 'northguild/gmt:packages/gmt/src/intermodal/parse/index.ts'
|
|
49
|
+
- 'northguild/gmt:packages/gmt/src/intermodal/validate/index.ts'
|
|
50
|
+
- 'northguild/gmt:packages/gmt/src/types/edi.ts'
|
|
51
|
+
- 'northguild/gmt:packages/gmt/src/types/epcis.ts'
|
|
52
|
+
- 'northguild/gmt:packages/gmt/src/types/two-digit-year.ts'
|
|
43
53
|
metadata:
|
|
44
54
|
type: core
|
|
45
55
|
library: '@northguild/gmt'
|
|
46
|
-
library_version: '1.
|
|
56
|
+
library_version: '1.19.0'
|
|
47
57
|
---
|
|
48
58
|
|
|
49
59
|
# GMT Timezone
|
|
@@ -69,6 +79,9 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
69
79
|
- The user is working out when a container's free time ends, how many days of
|
|
70
80
|
demurrage or detention are chargeable and for which dates, or which events a
|
|
71
81
|
charge's clock runs between.
|
|
82
|
+
- The user is reading or writing a UN/EDIFACT `DTM` value, an X12 date, time,
|
|
83
|
+
time code or date time period, or a GS1 EPCIS event time, and must know
|
|
84
|
+
whether its offset was stated.
|
|
72
85
|
- The user is asking whether a gate, desk, office or venue is open at an
|
|
73
86
|
instant, when it next opens or closes, how many working hours passed between
|
|
74
87
|
two instants, or when an SLA measured in open hours falls due — or is
|
|
@@ -115,11 +128,11 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
115
128
|
on a spring-forward one. `resolveLocal(local, zone, { disambiguation })` then
|
|
116
129
|
returns the instant, exact to the nanosecond, or `""` under `"reject"`. Reach
|
|
117
130
|
for `convertPlainDateTimeToZoned` instead when you want the zoned string.
|
|
118
|
-
6. **An offset is not a zone
|
|
119
|
-
`toOffsetInstant`
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
131
|
+
6. **An offset is not a zone, but a stored one is a rule for local time.**
|
|
132
|
+
`toOffsetInstant` gives `{ instant, offset, timeZone? }`, the pair EPCIS 2.0,
|
|
133
|
+
EDIFACT DTM and DICOM exchange. Its `±HH:MM[:SS]` offset is a valid `timeZone`
|
|
134
|
+
for `resolveLocal` and every function whose result has no zone in it. One
|
|
135
|
+
that returns a zoned string or formats with `Intl` takes none with seconds.
|
|
123
136
|
7. **Bucket in the zone, not in UTC.** `floorToZone(instant, unit, zone)` and
|
|
124
137
|
`bucketRange(start, end, unit, zone)` floor on the zone's own calendar
|
|
125
138
|
boundaries. Flooring a UTC instant to a UTC day and calling it a local day is
|
|
@@ -291,7 +304,83 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
291
304
|
`convertUtcToPlainDate(instant, { timeZone })`. A request before its
|
|
292
305
|
invoice, or an agreed date before the request, returns `null`. GMT
|
|
293
306
|
computes dates, not liability.
|
|
294
|
-
20. **
|
|
307
|
+
20. **A B/L date is a local date; a multimodal ETA keeps transit and dwell
|
|
308
|
+
apart.** `bolTimestamp(value, event, { timeZone })` returns the
|
|
309
|
+
`YYYY-MM-DD` date on the local clock in `timeZone` at the instant `value`:
|
|
310
|
+
DCSA Bill of Lading 3.0 types `issueDate`, `receivedForShipmentDate` and
|
|
311
|
+
`shippedOnBoardDate` as dates with no time or offset. `event` is
|
|
312
|
+
`"issue" | "received" | "shippedOnBoard"`, one per DCSA date field; all
|
|
313
|
+
three render the same way and anything else is `""`. `timeZone` is
|
|
314
|
+
required (no UTC default): the place of issue for `issue`, the loading
|
|
315
|
+
terminal for `received` and `shippedOnBoard`. 21:00 in New York
|
|
316
|
+
is 01:00Z the next day, so the UTC date is wrong. Only the instant is read;
|
|
317
|
+
a zoneless value is `""`. `multimodalETA(legs, { startTimeZone? })` takes
|
|
318
|
+
`scheduleDelivery`'s `Leg[]` and returns `{ eta, totalLegs, totalTransit,
|
|
319
|
+
totalDwell }`: transit is the legs' durations added up, dwell the time
|
|
320
|
+
actually spent at handoffs (a wait for a scheduled departure included; the
|
|
321
|
+
last leg's `dwellAfter` excluded), both with hours as the largest unit, and
|
|
322
|
+
they sum to the elapsed time. Every `scheduleDelivery` rule applies, so a
|
|
323
|
+
missed connection is `null`. An empty array is `{ eta: "", totalLegs: 0,
|
|
324
|
+
totalTransit: "PT0S", totalDwell: "PT0S" }`. Dwell is never estimated.
|
|
325
|
+
21. **An EDI timestamp is read by the function for its kind of value, and
|
|
326
|
+
nothing the code does not state is guessed.** Each kind has a `parse…`,
|
|
327
|
+
`format…` and `isValid…` function named for it (`parseEdifactDate`,
|
|
328
|
+
`formatEdifactDate`, `isValidEdifactDate`), and `format` is typed to that
|
|
329
|
+
kind's codes. UN/EDIFACT `DTM` (value 2380 against format code 2379):
|
|
330
|
+
`EdifactDate` (`102`), `EdifactTime` (`401`, `402`), `EdifactDateTime`
|
|
331
|
+
(`203`, `204`), `EdifactOffsetDateTime` (`205`, `208`, `303`, `304`),
|
|
332
|
+
`EdifactDatePeriod` (`718`), `EdifactDateTimePeriod` (`719`). X12 (element
|
|
333
|
+
1251 against qualifier 1250, in `DTP` and `DTM-05`/`06`): `X12Date` (`D8`,
|
|
334
|
+
`DB`), `X12Time` (`TM`, `TS`), `X12DateTime` (`DT`, `RTS`), `X12DateRange`
|
|
335
|
+
(`RD8`, `RD`), `X12DateTimeRange` (`RDT`, `DTS`). `parseX12Time(value)`
|
|
336
|
+
with no `format` reads element 337, tenths and hundredths included
|
|
337
|
+
(`"14300012"` is `"14:30:00.12"`), and `formatX12TimeElement(value, form)`
|
|
338
|
+
writes it in the mask named: `HHMM`, `HHMMSS`, `HHMMSSD` or `HHMMSSDD`
|
|
339
|
+
(`"14:30:00"` under `HHMMSSDD` is `"14300000"`). A parser returns one value:
|
|
340
|
+
`"2024-06-15"`, `"14:30:00"`, `"2024-06-15T14:30:00"`,
|
|
341
|
+
`"2024-06-15T14:30:00+02:00"` (the string `toOffsetInstant` reads), or
|
|
342
|
+
`{ start, end }` for a period or range. The sentinel is `""`, or `null`
|
|
343
|
+
for a period, a range, a zone or a classifier. A period formatter takes
|
|
344
|
+
`(start, end, format)`. No EDI function takes options. X12 freight is
|
|
345
|
+
three calls: `parseX12DateAndTime("20240615", "1430")` is
|
|
346
|
+
`"2024-06-15T14:30:00"` (elements 373 and 337 of `AT7`, `G62` or `DTM`,
|
|
347
|
+
both required), `x12TimeCodeOffset("20")` is `"-05:00"`, and
|
|
348
|
+
`resolveLocal(local, offset)` is `"2024-06-15T19:30:00Z"`. For a code
|
|
349
|
+
held as a plain string, `classifyEdifactDtmFormat`,
|
|
350
|
+
`classifyX12DateTimePeriodFormat` and `classifyX12TimeCode` return
|
|
351
|
+
`{ kind, format }` or `{ kind, timeCode }`, or `null` for a code no
|
|
352
|
+
function reads; testing `kind` narrows the code with no cast.
|
|
353
|
+
`parseEpcisEvent({ eventTime, eventTimeZoneOffset })` returns
|
|
354
|
+
`{ instant, offset, local }`; both fields are required and need not
|
|
355
|
+
agree. Five no-guess rules. (a) An offsetless value never becomes UTC:
|
|
356
|
+
`203`, `204`, `DT`, `RTS` and `parseX12DateAndTime` return a local
|
|
357
|
+
date-time; pass it and an IANA zone to `resolveLocal`. (b) A named X12
|
|
358
|
+
time code is a zone name, not an offset: `x12TimeCodeZone("ES")` is
|
|
359
|
+
`{ zone: "Eastern", daylight: false }` and `ET` has `daylight: null`,
|
|
360
|
+
while `x12TimeCodeOffset` reads `01`–`29`, `UT` and `GM`, and `13`–`24`
|
|
361
|
+
count down (`13` is `-12:00`). Each returns its sentinel for the other's
|
|
362
|
+
codes. (c) The `ZZZ` of `303` and `304` is an offset only: `+02`, `UTC`
|
|
363
|
+
and `GMT` are read, and letters such as `CET` return `""`. (d) A
|
|
364
|
+
two-digit year is not read by any EDI function: `101`, `201`, `202`,
|
|
365
|
+
`206`, `207`, `301`, `302`, `713`, `717`, `D6`, `TT`, `TR`, `RD6` and
|
|
366
|
+
`TU`. Read one with `parseDateWithPattern` or `parseDateTimeWithPattern`,
|
|
367
|
+
a `yy` pattern and `{ yearWindow }`: a start year such as `2000` (a fixed
|
|
368
|
+
window, for stored data) or `"rolling"` (50 years before the current UTC
|
|
369
|
+
year to 49 after). Without `yearWindow` a `yy` pattern returns `""`. (e)
|
|
370
|
+
`209`, `404`, `406`, `TC`, `EH`, `DDT`, `DTD`, `RTM` and `UN` are not
|
|
371
|
+
read: none states one date, time or date-time. A UN/EDIFACT period has no
|
|
372
|
+
hyphen (`2024061520240620` under `718`) and an X12 range has one
|
|
373
|
+
(`20240615-20240620` under `RD8`); a reversed one returns the sentinel.
|
|
374
|
+
Pass a UN/EDIFACT parser the unescaped value (`+02`, not `?+02`). A
|
|
375
|
+
formatter cuts seconds and fractions to its mask and never rounds.
|
|
376
|
+
It writes `ZZZ` as `±HH`, and `+05:30` under `303` or `304` returns `""`:
|
|
377
|
+
use `205` or `208`. Each value validator is true exactly when its parser
|
|
378
|
+
returns a value (`isValidX12DateAndTime(date, time)` for the freight
|
|
379
|
+
pair), and `isValidEdifactDtmFormat`, `isValidX12DateTimePeriodFormat`
|
|
380
|
+
and `isValidX12TimeCode` check a code alone. `isValidEpcisEvent` is
|
|
381
|
+
`isValidEpcisEventTime` and `isValidEpcisTimeZoneOffset` together: the
|
|
382
|
+
`epcisEventTime` regex matches `2024-02-30`, the validator does not.
|
|
383
|
+
22. **Operating hours are local windows resolved in the schedule's zone.** An
|
|
295
384
|
`OperatingSchedule` is `{ timeZone, weekly, holidays?, overrides? }`:
|
|
296
385
|
`weekly` maps ISO weekdays `1`–`7` to half-open `LocalWindow`s
|
|
297
386
|
(`{ from: "09:00", to: "17:00" }`); a `to` at or before `from` wraps past
|
|
@@ -307,7 +396,7 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
307
396
|
`addOperatingTime(start, "PT8H", schedule)` is the SLA deadline. Searches
|
|
308
397
|
stop at `within` (default `"P1Y"`) and return `""` past it; `P1D` is not
|
|
309
398
|
open time and returns `""`.
|
|
310
|
-
|
|
399
|
+
23. **A zoned string names one instant in every reader.** Temporal writes a
|
|
311
400
|
zone's offset rounded to the minute, so a zone with a sub-minute offset
|
|
312
401
|
(`Africa/Monrovia` stood at −00:44:30 until 1972) is written `-00:45`.
|
|
313
402
|
Every function that reads a moment (`toNanoseconds`, `spanNs`, `Interval`
|
|
@@ -329,7 +418,7 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
329
418
|
(`1952-10-15T23:59:59-11:20[Pacific/Niue]`); write the offset with seconds
|
|
330
419
|
to name the second. A zoned read refuses a local date of −271821-04-19,
|
|
331
420
|
which an instant reader accepts; pass that instant in `Z` form.
|
|
332
|
-
|
|
421
|
+
24. **Daylight time is read from the zone's clock changes.**
|
|
333
422
|
`isInDaylightSaving(zoned)` and `hasDaylightSaving(timeZone, { at })`
|
|
334
423
|
apply one rule, GMT's own definition and not the tz database's daylight
|
|
335
424
|
flag (no JavaScript API exposes it): daylight time runs from a forward
|
|
@@ -348,9 +437,10 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
348
437
|
read the runtime's time zone data, so an answer can change when that data
|
|
349
438
|
does. The JSDoc of `isInDaylightSaving` lists what the rule reads as
|
|
350
439
|
standard time.
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
440
|
+
25. **Read the docs site.** This skill is a routing pointer. The map of the
|
|
441
|
+
docs is `https://gmt-dox.northguild.workers.dev/llms.txt`, and each page
|
|
442
|
+
has a `.md` twin that holds its text. The JSDoc ships in the installed
|
|
443
|
+
package: `node_modules/@northguild/gmt/dist/**/*.d.ts`.
|
|
354
444
|
|
|
355
445
|
## Key functions
|
|
356
446
|
|
|
@@ -370,7 +460,8 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
370
460
|
`endOfUnix`, `mapZonedHoursInDay`, `getHoursInZonedDay`
|
|
371
461
|
- **Offset/DST reads**: `getZonedOffset`, `getZonedOffsetAs`,
|
|
372
462
|
`getTimeZoneOffset`, `parseTimeZoneFromZoned`
|
|
373
|
-
- **Offset-preserving instants**: `toOffsetInstant`, `fromOffsetInstant
|
|
463
|
+
- **Offset-preserving instants**: `toOffsetInstant`, `fromOffsetInstant`,
|
|
464
|
+
`isValidUtcOffset` (the pair's `±HH:MM[:SS]` offset; not `Z`, not `+0530`)
|
|
374
465
|
- **Local-time resolution**: `classifyLocal`, `resolveLocal`
|
|
375
466
|
- **Zone-aware buckets**: `floorToZone`, `bucketRange`,
|
|
376
467
|
`isValidZoneBucketUnit`
|
|
@@ -384,10 +475,24 @@ converting between time zones, or doing arithmetic that must respect DST.
|
|
|
384
475
|
- **Free time and demurrage**: `freeTimeExpiry`, `chargeableDays`,
|
|
385
476
|
`demurrageClock`
|
|
386
477
|
- **Billing deadlines**: `billingTimeline`
|
|
478
|
+
- **Bill of lading dates and multimodal ETA**: `bolTimestamp`, `multimodalETA`
|
|
479
|
+
- **EDI and event timestamps**: `parseEdifactDate`, `parseEdifactTime`,
|
|
480
|
+
`parseEdifactDateTime`, `parseEdifactOffsetDateTime`,
|
|
481
|
+
`parseEdifactDatePeriod`, `parseEdifactDateTimePeriod`, `parseX12Date`,
|
|
482
|
+
`parseX12Time`, `parseX12DateTime`, `parseX12DateRange`,
|
|
483
|
+
`parseX12DateTimeRange`, `parseX12DateAndTime`, `x12TimeCodeOffset`,
|
|
484
|
+
`x12TimeCodeZone`, `classifyEdifactDtmFormat`,
|
|
485
|
+
`classifyX12DateTimePeriodFormat`, `classifyX12TimeCode`,
|
|
486
|
+
`parseEpcisEvent`; a `format…` and an `isValid…` for each `parseEdifact…`
|
|
487
|
+
kind, for `X12Date`, `X12Time`, `X12DateTime`, `X12DateRange` and
|
|
488
|
+
`X12DateTimeRange`, and for `EpcisEvent`; `formatX12TimeElement`,
|
|
489
|
+
`isValidX12DateAndTime`, `isValidEpcisEventTime`,
|
|
490
|
+
`isValidEpcisTimeZoneOffset`, `isValidEdifactDtmFormat`,
|
|
491
|
+
`isValidX12DateTimePeriodFormat`, `isValidX12TimeCode`
|
|
387
492
|
- **Operating hours**: `recurringWindows`, `operatingIntervals`, `isOpenAt`,
|
|
388
493
|
`nextOpenAt`, `nextCloseAt`, `operatingTimeBetween`, `addOperatingTime`
|
|
389
494
|
|
|
390
495
|
## References
|
|
391
496
|
|
|
392
|
-
- [
|
|
497
|
+
- [Zoned operations guide](https://gmt-dox.northguild.workers.dev/guides/zoned-date-operations/zoned-operations/)
|
|
393
498
|
- [DST Disambiguation guide](https://gmt-dox.northguild.workers.dev/guides/concepts/dst-disambiguation/)
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
/**
|
|
3
|
-
* Read a Unix epoch argument as a `Temporal.ZonedDateTime` under the shared `unix/` options, or
|
|
4
|
-
* null when anything is invalid.
|
|
5
|
-
*
|
|
6
|
-
* - `value` follows the one epoch grammar (`parseUnixEpochValue`).
|
|
7
|
-
* - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
|
|
8
|
-
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
|
|
9
|
-
* (see `normalizeTimeZone`).
|
|
10
|
-
*
|
|
11
|
-
* @param value Unix epoch number or digit string
|
|
12
|
-
* @param options optional `{ epochUnit, timeZone }`
|
|
13
|
-
* @returns the zoned date-time, or null
|
|
14
|
-
*
|
|
15
|
-
* @example unixZonedDateTime(0)?.toString() // "1970-01-01T00:00:00+00:00[UTC]"
|
|
16
|
-
* @example unixZonedDateTime("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
|
|
17
|
-
* @example unixZonedDateTime(0, { timeZone: "Asia/Tokio" }) // null
|
|
18
|
-
*/
|
|
19
|
-
export declare function unixZonedDateTime(value: unknown, options?: {
|
|
20
|
-
epochUnit?: unknown;
|
|
21
|
-
timeZone?: unknown;
|
|
22
|
-
}): Temporal.ZonedDateTime | null;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { normalizeTimeZone } from "./normalizeTimeZone.js";
|
|
2
|
-
import { resolveUnixEpochUnit, unixEpochToInstant } from "./unixEpochValue.js";
|
|
3
|
-
/**
|
|
4
|
-
* Read a Unix epoch argument as a `Temporal.ZonedDateTime` under the shared `unix/` options, or
|
|
5
|
-
* null when anything is invalid.
|
|
6
|
-
*
|
|
7
|
-
* - `value` follows the one epoch grammar (`parseUnixEpochValue`).
|
|
8
|
-
* - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
|
|
9
|
-
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
|
|
10
|
-
* (see `normalizeTimeZone`).
|
|
11
|
-
*
|
|
12
|
-
* @param value Unix epoch number or digit string
|
|
13
|
-
* @param options optional `{ epochUnit, timeZone }`
|
|
14
|
-
* @returns the zoned date-time, or null
|
|
15
|
-
*
|
|
16
|
-
* @example unixZonedDateTime(0)?.toString() // "1970-01-01T00:00:00+00:00[UTC]"
|
|
17
|
-
* @example unixZonedDateTime("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
|
|
18
|
-
* @example unixZonedDateTime(0, { timeZone: "Asia/Tokio" }) // null
|
|
19
|
-
*/
|
|
20
|
-
export function unixZonedDateTime(value, options) {
|
|
21
|
-
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
22
|
-
const timeZone = normalizeTimeZone(options?.timeZone);
|
|
23
|
-
if (epochUnit === null || !timeZone) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
return (unixEpochToInstant(value, epochUnit)?.toZonedDateTimeISO(timeZone) ?? null);
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
/**
|
|
3
|
-
* Read a UTC ISO string as a zoned date-time for the `parse*FromUtc` accessors: the instant it
|
|
4
|
-
* names, on the wall clock of `options.timeZone`. The utc twin of `unixZonedDateTime`.
|
|
5
|
-
*
|
|
6
|
-
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
|
|
7
|
-
* (see `normalizeTimeZone`).
|
|
8
|
-
*
|
|
9
|
-
* @param value UTC ISO 8601 datetime string
|
|
10
|
-
* @param options optional `{ timeZone }`
|
|
11
|
-
* @returns the zoned date-time, or null when the value or the zone is invalid
|
|
12
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00+09:00[Asia/Tokyo]"
|
|
13
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "local" })?.timeZoneId // the system zone, e.g. "America/New_York"
|
|
14
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
|
|
15
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00") // null (no Z)
|
|
16
|
-
*/
|
|
17
|
-
export declare function utcZonedDateTime(value: string, options?: {
|
|
18
|
-
timeZone?: string;
|
|
19
|
-
}): Temporal.ZonedDateTime | null;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { isValidUtc } from "../utc/validate/isValidUtc.js";
|
|
3
|
-
import { normalizeTimeZone } from "./normalizeTimeZone.js";
|
|
4
|
-
/**
|
|
5
|
-
* Read a UTC ISO string as a zoned date-time for the `parse*FromUtc` accessors: the instant it
|
|
6
|
-
* names, on the wall clock of `options.timeZone`. The utc twin of `unixZonedDateTime`.
|
|
7
|
-
*
|
|
8
|
-
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
|
|
9
|
-
* (see `normalizeTimeZone`).
|
|
10
|
-
*
|
|
11
|
-
* @param value UTC ISO 8601 datetime string
|
|
12
|
-
* @param options optional `{ timeZone }`
|
|
13
|
-
* @returns the zoned date-time, or null when the value or the zone is invalid
|
|
14
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00+09:00[Asia/Tokyo]"
|
|
15
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "local" })?.timeZoneId // the system zone, e.g. "America/New_York"
|
|
16
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
|
|
17
|
-
* @example utcZonedDateTime("2024-03-15T14:30:00") // null (no Z)
|
|
18
|
-
*/
|
|
19
|
-
export function utcZonedDateTime(value, options) {
|
|
20
|
-
if (!isValidUtc(value))
|
|
21
|
-
return null;
|
|
22
|
-
const timeZone = normalizeTimeZone(options?.timeZone);
|
|
23
|
-
if (timeZone === "")
|
|
24
|
-
return null;
|
|
25
|
-
try {
|
|
26
|
-
return Temporal.Instant.from(value).toZonedDateTimeISO(timeZone);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
}
|