@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.
Files changed (593) hide show
  1. package/README.md +55 -2920
  2. package/dist/calendar/calculate/bucketRange.d.ts +10 -2
  3. package/dist/calendar/calculate/bucketRange.js +18 -61
  4. package/dist/calendar/calculate/floorToZone.d.ts +10 -2
  5. package/dist/calendar/calculate/floorToZone.js +15 -7
  6. package/dist/calendar/hours/addOperatingTime.d.ts +6 -0
  7. package/dist/calendar/hours/addOperatingTime.js +7 -1
  8. package/dist/calendar/hours/isOpenAt.d.ts +6 -0
  9. package/dist/calendar/hours/isOpenAt.js +6 -0
  10. package/dist/calendar/hours/nextCloseAt.d.ts +6 -0
  11. package/dist/calendar/hours/nextCloseAt.js +7 -1
  12. package/dist/calendar/hours/nextOpenAt.d.ts +6 -0
  13. package/dist/calendar/hours/nextOpenAt.js +7 -1
  14. package/dist/calendar/hours/operatingIntervals.d.ts +5 -0
  15. package/dist/calendar/hours/operatingIntervals.js +5 -0
  16. package/dist/calendar/hours/operatingTimeBetween.d.ts +5 -0
  17. package/dist/calendar/hours/operatingTimeBetween.js +5 -0
  18. package/dist/calendar/hours/recurringWindows.d.ts +8 -1
  19. package/dist/calendar/hours/recurringWindows.js +12 -4
  20. package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
  21. package/dist/duration/calculate/durationFromUnits.js +67 -0
  22. package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
  23. package/dist/duration/calculate/getDurationUnit.js +2 -2
  24. package/dist/duration/calculate/index.d.ts +3 -1
  25. package/dist/duration/calculate/index.js +3 -1
  26. package/dist/duration/calculate/negateDuration.d.ts +1 -1
  27. package/dist/duration/calculate/negateDuration.js +1 -1
  28. package/dist/duration/calculate/{durationAs.d.ts → totalDuration.d.ts} +25 -19
  29. package/dist/duration/calculate/{durationAs.js → totalDuration.js} +25 -19
  30. package/dist/duration/calculate/totalUnits.d.ts +49 -0
  31. package/dist/duration/calculate/totalUnits.js +73 -0
  32. package/dist/duration/compare/compareDurations.d.ts +1 -1
  33. package/dist/duration/compare/compareDurations.js +1 -1
  34. package/dist/duty/calculate/dutyDayFor.d.ts +38 -0
  35. package/dist/duty/calculate/dutyDayFor.js +71 -0
  36. package/dist/duty/calculate/dutyTotals.d.ts +24 -0
  37. package/dist/duty/calculate/dutyTotals.js +41 -0
  38. package/dist/duty/calculate/dutyViolations.d.ts +74 -0
  39. package/dist/duty/calculate/dutyViolations.js +65 -0
  40. package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
  41. package/dist/duty/calculate/evaluateDutyLog.js +75 -0
  42. package/dist/duty/calculate/index.d.ts +7 -0
  43. package/dist/duty/calculate/index.js +7 -0
  44. package/dist/duty/calculate/longestRun.d.ts +28 -0
  45. package/dist/duty/calculate/longestRun.js +54 -0
  46. package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
  47. package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
  48. package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
  49. package/dist/duty/calculate/qualifyingRests.js +49 -0
  50. package/dist/duty/index.d.ts +3 -0
  51. package/dist/duty/index.js +4 -0
  52. package/dist/duty/validate/index.d.ts +1 -0
  53. package/dist/duty/validate/index.js +1 -0
  54. package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
  55. package/dist/duty/validate/isValidDutyLog.js +34 -0
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.js +1 -0
  58. package/dist/instant/convert/classifyLocal.d.ts +5 -1
  59. package/dist/instant/convert/classifyLocal.js +16 -6
  60. package/dist/instant/convert/fromOffsetInstant.d.ts +4 -0
  61. package/dist/instant/convert/fromOffsetInstant.js +6 -1
  62. package/dist/instant/convert/resolveLocal.d.ts +7 -2
  63. package/dist/instant/convert/resolveLocal.js +16 -8
  64. package/dist/instant/convert/toOffsetInstant.d.ts +12 -8
  65. package/dist/instant/convert/toOffsetInstant.js +19 -11
  66. package/dist/instant/index.d.ts +1 -0
  67. package/dist/instant/index.js +1 -0
  68. package/dist/instant/validate/index.d.ts +1 -0
  69. package/dist/instant/validate/index.js +1 -0
  70. package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
  71. package/dist/instant/validate/isValidUtcOffset.js +35 -0
  72. package/dist/intermodal/calculate/chargeableDays.d.ts +6 -0
  73. package/dist/intermodal/calculate/chargeableDays.js +12 -4
  74. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +7 -0
  75. package/dist/intermodal/calculate/freeTimeExpiry.js +15 -4
  76. package/dist/intermodal/calculate/index.d.ts +1 -0
  77. package/dist/intermodal/calculate/index.js +1 -0
  78. package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
  79. package/dist/intermodal/calculate/multimodalETA.js +145 -0
  80. package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
  81. package/dist/intermodal/format/bolTimestamp.js +78 -0
  82. package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
  83. package/dist/intermodal/format/formatEdifactDate.js +42 -0
  84. package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
  85. package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
  86. package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
  87. package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
  88. package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
  89. package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
  90. package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
  91. package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
  92. package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
  93. package/dist/intermodal/format/formatEdifactTime.js +43 -0
  94. package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
  95. package/dist/intermodal/format/formatEpcisEvent.js +79 -0
  96. package/dist/intermodal/format/formatX12Date.d.ts +35 -0
  97. package/dist/intermodal/format/formatX12Date.js +43 -0
  98. package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
  99. package/dist/intermodal/format/formatX12DateRange.js +45 -0
  100. package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
  101. package/dist/intermodal/format/formatX12DateTime.js +47 -0
  102. package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
  103. package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
  104. package/dist/intermodal/format/formatX12Time.d.ts +42 -0
  105. package/dist/intermodal/format/formatX12Time.js +50 -0
  106. package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
  107. package/dist/intermodal/format/formatX12TimeElement.js +54 -0
  108. package/dist/intermodal/format/index.d.ts +14 -0
  109. package/dist/intermodal/format/index.js +14 -0
  110. package/dist/intermodal/index.d.ts +3 -0
  111. package/dist/intermodal/index.js +3 -0
  112. package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
  113. package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
  114. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
  115. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
  116. package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
  117. package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
  118. package/dist/intermodal/parse/index.d.ts +18 -0
  119. package/dist/intermodal/parse/index.js +18 -0
  120. package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
  121. package/dist/intermodal/parse/parseEdifactDate.js +45 -0
  122. package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
  123. package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
  124. package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
  125. package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
  126. package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
  127. package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
  128. package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
  129. package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
  130. package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
  131. package/dist/intermodal/parse/parseEdifactTime.js +45 -0
  132. package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
  133. package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
  134. package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
  135. package/dist/intermodal/parse/parseX12Date.js +47 -0
  136. package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
  137. package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
  138. package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
  139. package/dist/intermodal/parse/parseX12DateRange.js +52 -0
  140. package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
  141. package/dist/intermodal/parse/parseX12DateTime.js +53 -0
  142. package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
  143. package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
  144. package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
  145. package/dist/intermodal/parse/parseX12Time.js +77 -0
  146. package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
  147. package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
  148. package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
  149. package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
  150. package/dist/intermodal/validate/index.d.ts +18 -0
  151. package/dist/intermodal/validate/index.js +18 -0
  152. package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
  153. package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
  154. package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
  155. package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
  156. package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
  157. package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
  158. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
  159. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
  160. package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
  161. package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
  162. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
  163. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
  164. package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
  165. package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
  166. package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
  167. package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
  168. package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
  169. package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
  170. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
  171. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
  172. package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
  173. package/dist/intermodal/validate/isValidX12Date.js +30 -0
  174. package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
  175. package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
  176. package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
  177. package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
  178. package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
  179. package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
  180. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
  181. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
  182. package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
  183. package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
  184. package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
  185. package/dist/intermodal/validate/isValidX12Time.js +40 -0
  186. package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
  187. package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
  188. package/dist/internal/businessCalendar.js +4 -9
  189. package/dist/internal/dutyEngine.d.ts +125 -0
  190. package/dist/internal/dutyEngine.js +1746 -0
  191. package/dist/internal/dutyLog.d.ts +27 -0
  192. package/dist/internal/dutyLog.js +47 -0
  193. package/dist/internal/dutyPeriods.d.ts +135 -0
  194. package/dist/internal/dutyPeriods.js +369 -0
  195. package/dist/internal/dutyRules.d.ts +197 -0
  196. package/dist/internal/dutyRules.js +484 -0
  197. package/dist/internal/ediDateTimeFields.d.ts +97 -0
  198. package/dist/internal/ediDateTimeFields.js +288 -0
  199. package/dist/internal/ediDateTimeWriter.d.ts +92 -0
  200. package/dist/internal/ediDateTimeWriter.js +298 -0
  201. package/dist/internal/ediGrammar.d.ts +158 -0
  202. package/dist/internal/ediGrammar.js +384 -0
  203. package/dist/internal/englishCalendarNames.d.ts +3 -1
  204. package/dist/internal/englishCalendarNames.js +3 -1
  205. package/dist/internal/freeTimeLedger.d.ts +5 -0
  206. package/dist/internal/freeTimeLedger.js +11 -2
  207. package/dist/internal/index.d.ts +5 -2
  208. package/dist/internal/index.js +9 -2
  209. package/dist/internal/intervalNanoseconds.js +2 -1
  210. package/dist/internal/isObject.d.ts +13 -6
  211. package/dist/internal/isObject.js +14 -7
  212. package/dist/internal/isoYearString.d.ts +21 -0
  213. package/dist/internal/isoYearString.js +27 -0
  214. package/dist/internal/maxPieces.js +2 -1
  215. package/dist/internal/normalizeTimeZone.d.ts +4 -1
  216. package/dist/internal/normalizeTimeZone.js +4 -1
  217. package/dist/internal/operatingSchedule.d.ts +13 -4
  218. package/dist/internal/operatingSchedule.js +146 -58
  219. package/dist/internal/patternToken.d.ts +10 -3
  220. package/dist/internal/patternToken.js +31 -12
  221. package/dist/internal/readDurationUnits.d.ts +34 -0
  222. package/dist/internal/readDurationUnits.js +78 -0
  223. package/dist/internal/readSetFields.d.ts +50 -0
  224. package/dist/internal/readSetFields.js +179 -0
  225. package/dist/internal/resolveRelativeUnit.d.ts +1 -1
  226. package/dist/internal/resolveRelativeUnit.js +1 -1
  227. package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
  228. package/dist/internal/resolveUnixIntervalPair.js +11 -7
  229. package/dist/internal/startOrEndOfUnix.d.ts +2 -1
  230. package/dist/internal/startOrEndOfUnix.js +9 -6
  231. package/dist/internal/twoDigitYear.d.ts +19 -0
  232. package/dist/internal/twoDigitYear.js +22 -0
  233. package/dist/internal/unixEpochValue.js +3 -2
  234. package/dist/internal/unixWallClock.d.ts +24 -0
  235. package/dist/internal/unixWallClock.js +35 -0
  236. package/dist/internal/utcWallClock.d.ts +20 -0
  237. package/dist/internal/utcWallClock.js +32 -0
  238. package/dist/internal/yearWindowStart.d.ts +28 -0
  239. package/dist/internal/yearWindowStart.js +52 -0
  240. package/dist/internal/zoneBucketCap.d.ts +18 -0
  241. package/dist/internal/zoneBucketCap.js +64 -0
  242. package/dist/internal/zoneFrame.d.ts +180 -0
  243. package/dist/internal/zoneFrame.js +221 -0
  244. package/dist/internal/zonedNowUnitValue.d.ts +7 -4
  245. package/dist/internal/zonedNowUnitValue.js +8 -4
  246. package/dist/internal/zonedWallClockDifference.js +4 -4
  247. package/dist/internal/zonedWallClockOperations.d.ts +5 -2
  248. package/dist/internal/zonedWallClockOperations.js +7 -10
  249. package/dist/plain/calculate/addDate.js +4 -7
  250. package/dist/plain/calculate/addDateTime.js +4 -7
  251. package/dist/plain/calculate/addTime.js +4 -7
  252. package/dist/plain/calculate/endOfTime.d.ts +1 -1
  253. package/dist/plain/calculate/setDate.d.ts +20 -3
  254. package/dist/plain/calculate/setDate.js +27 -7
  255. package/dist/plain/calculate/setDateTime.d.ts +15 -3
  256. package/dist/plain/calculate/setDateTime.js +22 -7
  257. package/dist/plain/calculate/setTime.d.ts +13 -1
  258. package/dist/plain/calculate/setTime.js +21 -6
  259. package/dist/plain/calculate/startOfTime.d.ts +1 -1
  260. package/dist/plain/calculate/subtractDate.js +4 -7
  261. package/dist/plain/calculate/subtractDateTime.js +4 -7
  262. package/dist/plain/calculate/subtractTime.js +4 -7
  263. package/dist/plain/format/formatCalendar.js +2 -1
  264. package/dist/plain/format/formatRelativeDate.js +2 -1
  265. package/dist/plain/format/formatRelativeDateTime.js +2 -1
  266. package/dist/plain/format/formatRelativeTime.js +2 -1
  267. package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
  268. package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
  269. package/dist/plain/format/index.d.ts +1 -1
  270. package/dist/plain/format/index.js +1 -1
  271. package/dist/plain/get/getNowUnit.d.ts +2 -0
  272. package/dist/plain/get/getNowUnit.js +2 -0
  273. package/dist/plain/get/getYear.d.ts +2 -0
  274. package/dist/plain/get/getYear.js +4 -3
  275. package/dist/plain/interval/intervalXorAllDate.js +2 -2
  276. package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
  277. package/dist/plain/interval/intervalXorAllTime.js +2 -2
  278. package/dist/plain/interval/mergeIntervalsDate.js +2 -2
  279. package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
  280. package/dist/plain/interval/mergeIntervalsTime.js +2 -2
  281. package/dist/plain/parse/index.d.ts +1 -1
  282. package/dist/plain/parse/index.js +1 -1
  283. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +16 -3
  284. package/dist/plain/parse/parseDateTimeWithPattern.js +20 -5
  285. package/dist/plain/parse/parseDateWithPattern.d.ts +17 -3
  286. package/dist/plain/parse/parseDateWithPattern.js +21 -5
  287. package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
  288. package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
  289. package/dist/plain/parse/parseTimeWithPattern.js +1 -0
  290. package/dist/plain/parse/parseUnitFromDate.d.ts +3 -0
  291. package/dist/plain/parse/parseUnitFromDate.js +5 -1
  292. package/dist/plain/parse/parseUnitFromDateTime.d.ts +3 -0
  293. package/dist/plain/parse/parseUnitFromDateTime.js +5 -1
  294. package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
  295. package/dist/plain/parse/parseYearFromDate.js +7 -3
  296. package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
  297. package/dist/plain/parse/parseYearFromDateTime.js +6 -3
  298. package/dist/plain/validate/index.d.ts +1 -0
  299. package/dist/plain/validate/index.js +1 -0
  300. package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
  301. package/dist/plain/validate/isValidSqlDateTime.js +36 -0
  302. package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
  303. package/dist/precision/convert/fromNanoseconds.js +9 -3
  304. package/dist/regex/epcis.d.ts +60 -0
  305. package/dist/regex/epcis.js +60 -0
  306. package/dist/regex/http-date.d.ts +6 -4
  307. package/dist/regex/http-date.js +6 -4
  308. package/dist/regex/index.d.ts +1 -0
  309. package/dist/regex/index.js +1 -0
  310. package/dist/regex/rfc-2822.d.ts +2 -0
  311. package/dist/regex/rfc-2822.js +2 -0
  312. package/dist/regex/rfc-3339.d.ts +3 -1
  313. package/dist/regex/rfc-3339.js +3 -1
  314. package/dist/regex/sql-date-time.d.ts +2 -1
  315. package/dist/regex/sql-date-time.js +2 -1
  316. package/dist/regex/time-zone-like.d.ts +3 -2
  317. package/dist/regex/time-zone-like.js +3 -2
  318. package/dist/regex/utc-offset.d.ts +2 -1
  319. package/dist/regex/utc-offset.js +2 -1
  320. package/dist/transport/calculate/crossingTime.d.ts +6 -1
  321. package/dist/transport/calculate/crossingTime.js +6 -1
  322. package/dist/transport/calculate/cutoffAt.d.ts +6 -1
  323. package/dist/transport/calculate/cutoffAt.js +2 -0
  324. package/dist/transport/calculate/cutoffSchedule.d.ts +6 -1
  325. package/dist/transport/calculate/cutoffSchedule.js +2 -0
  326. package/dist/transport/calculate/dwellTime.d.ts +6 -1
  327. package/dist/transport/calculate/dwellTime.js +6 -1
  328. package/dist/transport/calculate/scheduleDelivery.d.ts +13 -5
  329. package/dist/transport/calculate/scheduleDelivery.js +6 -1
  330. package/dist/transport/convert/etaAtZone.d.ts +6 -1
  331. package/dist/transport/convert/etaAtZone.js +6 -1
  332. package/dist/types/business-calendar.d.ts +5 -4
  333. package/dist/types/duty.d.ts +777 -0
  334. package/dist/types/duty.js +0 -0
  335. package/dist/types/edi.d.ts +407 -0
  336. package/dist/types/edi.js +0 -0
  337. package/dist/types/epcis.d.ts +25 -0
  338. package/dist/types/epcis.js +0 -0
  339. package/dist/types/exact-duration-unit.d.ts +8 -0
  340. package/dist/types/exact-duration-unit.js +0 -0
  341. package/dist/types/free-time-options.d.ts +4 -3
  342. package/dist/types/index.d.ts +5 -0
  343. package/dist/types/index.js +5 -0
  344. package/dist/types/operating-schedule.d.ts +3 -2
  345. package/dist/types/two-digit-year.d.ts +23 -0
  346. package/dist/types/two-digit-year.js +0 -0
  347. package/dist/types/zone-bucket-unit.d.ts +1 -1
  348. package/dist/unix/calculate/addUnix.d.ts +11 -2
  349. package/dist/unix/calculate/addUnix.js +14 -11
  350. package/dist/unix/calculate/diffUnix.d.ts +10 -2
  351. package/dist/unix/calculate/diffUnix.js +11 -6
  352. package/dist/unix/calculate/diffUnixAsDuration.d.ts +10 -2
  353. package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
  354. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
  355. package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
  356. package/dist/unix/calculate/endOfUnix.d.ts +11 -2
  357. package/dist/unix/calculate/endOfUnix.js +7 -0
  358. package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
  359. package/dist/unix/calculate/isBetweenUnix.js +3 -3
  360. package/dist/unix/calculate/roundUnix.d.ts +10 -2
  361. package/dist/unix/calculate/roundUnix.js +13 -6
  362. package/dist/unix/calculate/setUnix.d.ts +25 -5
  363. package/dist/unix/calculate/setUnix.js +33 -12
  364. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
  365. package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
  366. package/dist/unix/calculate/startOfUnix.d.ts +11 -2
  367. package/dist/unix/calculate/startOfUnix.js +7 -0
  368. package/dist/unix/calculate/subtractUnix.d.ts +10 -2
  369. package/dist/unix/calculate/subtractUnix.js +13 -11
  370. package/dist/unix/compare/areUnixEqualBy.d.ts +11 -2
  371. package/dist/unix/compare/areUnixEqualBy.js +7 -0
  372. package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
  373. package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
  374. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
  375. package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
  376. package/dist/unix/convert/convertUnixToPlainTime.d.ts +5 -2
  377. package/dist/unix/convert/convertUnixToPlainTime.js +5 -4
  378. package/dist/unix/convert/convertUnixToZoned.d.ts +5 -1
  379. package/dist/unix/convert/convertUnixToZoned.js +5 -1
  380. package/dist/unix/format/formatCalendarUnix.d.ts +6 -2
  381. package/dist/unix/format/formatCalendarUnix.js +6 -1
  382. package/dist/unix/format/formatRelativeUnix.d.ts +11 -3
  383. package/dist/unix/format/formatRelativeUnix.js +13 -5
  384. package/dist/unix/format/formatUnix.d.ts +7 -2
  385. package/dist/unix/format/formatUnix.js +4 -0
  386. package/dist/unix/get/getUnixDay.d.ts +1 -3
  387. package/dist/unix/get/getUnixDay.js +5 -12
  388. package/dist/unix/get/getUnixHour.d.ts +1 -3
  389. package/dist/unix/get/getUnixHour.js +5 -12
  390. package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
  391. package/dist/unix/get/getUnixMicrosecond.js +4 -11
  392. package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
  393. package/dist/unix/get/getUnixMillisecond.js +5 -12
  394. package/dist/unix/get/getUnixMinute.d.ts +1 -3
  395. package/dist/unix/get/getUnixMinute.js +5 -12
  396. package/dist/unix/get/getUnixMonth.d.ts +1 -3
  397. package/dist/unix/get/getUnixMonth.js +5 -12
  398. package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
  399. package/dist/unix/get/getUnixNanosecond.js +4 -11
  400. package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
  401. package/dist/unix/get/getUnixNowUnit.js +2 -0
  402. package/dist/unix/get/getUnixSecond.d.ts +1 -3
  403. package/dist/unix/get/getUnixSecond.js +5 -12
  404. package/dist/unix/get/getUnixYear.d.ts +3 -3
  405. package/dist/unix/get/getUnixYear.js +5 -12
  406. package/dist/unix/interval/intervalCountUnix.d.ts +11 -2
  407. package/dist/unix/interval/intervalCountUnix.js +7 -0
  408. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
  409. package/dist/unix/interval/intervalFromDurationUnix.js +12 -7
  410. package/dist/unix/interval/intervalLengthUnix.d.ts +10 -2
  411. package/dist/unix/interval/intervalLengthUnix.js +6 -0
  412. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
  413. package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
  414. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +10 -2
  415. package/dist/unix/interval/splitIntervalByUnitUnix.js +12 -6
  416. package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
  417. package/dist/unix/parse/parseDateFromUnix.js +3 -3
  418. package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
  419. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
  420. package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
  421. package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
  422. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  423. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  424. package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
  425. package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
  426. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
  427. package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
  428. package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
  429. package/dist/unix/parse/parseTimeFromUnix.js +4 -3
  430. package/dist/unix/parse/parseUnitFromUnix.d.ts +9 -3
  431. package/dist/unix/parse/parseUnitFromUnix.js +21 -14
  432. package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
  433. package/dist/unix/parse/parseWeekFromUnix.js +4 -4
  434. package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
  435. package/dist/unix/parse/parseYearFromUnix.js +4 -1
  436. package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
  437. package/dist/utc/calculate/addUtc.js +4 -7
  438. package/dist/utc/calculate/setUtc.d.ts +16 -3
  439. package/dist/utc/calculate/setUtc.js +22 -8
  440. package/dist/utc/calculate/subtractUtc.js +4 -7
  441. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -2
  442. package/dist/utc/convert/convertUtcToPlainDate.js +10 -7
  443. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +9 -2
  444. package/dist/utc/convert/convertUtcToPlainDateTime.js +12 -13
  445. package/dist/utc/convert/convertUtcToPlainTime.d.ts +5 -2
  446. package/dist/utc/convert/convertUtcToPlainTime.js +7 -6
  447. package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
  448. package/dist/utc/convert/convertUtcToZoned.js +5 -1
  449. package/dist/utc/format/formatCalendarUtc.d.ts +6 -2
  450. package/dist/utc/format/formatCalendarUtc.js +6 -1
  451. package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
  452. package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +7 -7
  453. package/dist/utc/format/formatRelativeUtc.d.ts +11 -3
  454. package/dist/utc/format/formatRelativeUtc.js +13 -5
  455. package/dist/utc/format/formatUtc.d.ts +7 -2
  456. package/dist/utc/format/formatUtc.js +4 -0
  457. package/dist/utc/format/index.d.ts +1 -1
  458. package/dist/utc/format/index.js +1 -1
  459. package/dist/utc/get/getUtcDay.d.ts +1 -3
  460. package/dist/utc/get/getUtcDay.js +5 -12
  461. package/dist/utc/get/getUtcHour.d.ts +1 -3
  462. package/dist/utc/get/getUtcHour.js +5 -12
  463. package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
  464. package/dist/utc/get/getUtcMicrosecond.js +4 -11
  465. package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
  466. package/dist/utc/get/getUtcMillisecond.js +5 -12
  467. package/dist/utc/get/getUtcMinute.d.ts +1 -3
  468. package/dist/utc/get/getUtcMinute.js +5 -12
  469. package/dist/utc/get/getUtcMonth.d.ts +1 -3
  470. package/dist/utc/get/getUtcMonth.js +5 -12
  471. package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
  472. package/dist/utc/get/getUtcNanosecond.js +4 -11
  473. package/dist/utc/get/getUtcNow.d.ts +1 -3
  474. package/dist/utc/get/getUtcNow.js +2 -9
  475. package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
  476. package/dist/utc/get/getUtcNowUnit.js +2 -0
  477. package/dist/utc/get/getUtcSecond.d.ts +1 -3
  478. package/dist/utc/get/getUtcSecond.js +5 -12
  479. package/dist/utc/get/getUtcYear.d.ts +3 -3
  480. package/dist/utc/get/getUtcYear.js +5 -12
  481. package/dist/utc/interval/intervalXorAllUtc.js +2 -2
  482. package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
  483. package/dist/utc/parse/index.d.ts +1 -1
  484. package/dist/utc/parse/index.js +1 -1
  485. package/dist/utc/parse/parseDateFromUtc.d.ts +4 -2
  486. package/dist/utc/parse/parseDateFromUtc.js +2 -2
  487. package/dist/utc/parse/parseDayFromUtc.d.ts +4 -2
  488. package/dist/utc/parse/parseDayFromUtc.js +2 -2
  489. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +4 -2
  490. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -4
  491. package/dist/utc/parse/parseHourFromUtc.d.ts +4 -2
  492. package/dist/utc/parse/parseHourFromUtc.js +2 -2
  493. package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
  494. package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
  495. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +4 -2
  496. package/dist/utc/parse/parseMicrosecondFromUtc.js +2 -2
  497. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +4 -2
  498. package/dist/utc/parse/parseMillisecondFromUtc.js +2 -2
  499. package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
  500. package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
  501. package/dist/utc/parse/parseMonthFromUtc.d.ts +4 -2
  502. package/dist/utc/parse/parseMonthFromUtc.js +2 -2
  503. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +4 -2
  504. package/dist/utc/parse/parseNanosecondFromUtc.js +2 -2
  505. package/dist/utc/parse/parseSecondFromUtc.d.ts +4 -2
  506. package/dist/utc/parse/parseSecondFromUtc.js +2 -2
  507. package/dist/utc/parse/parseTimeFromUtc.d.ts +5 -2
  508. package/dist/utc/parse/parseTimeFromUtc.js +5 -4
  509. package/dist/utc/parse/parseUnitFromUtc.d.ts +10 -3
  510. package/dist/utc/parse/parseUnitFromUtc.js +11 -5
  511. package/dist/utc/parse/parseWeekFromUtc.d.ts +4 -2
  512. package/dist/utc/parse/parseWeekFromUtc.js +4 -4
  513. package/dist/utc/parse/parseYearFromUtc.d.ts +8 -4
  514. package/dist/utc/parse/parseYearFromUtc.js +8 -5
  515. package/dist/utc/validate/index.d.ts +2 -0
  516. package/dist/utc/validate/index.js +2 -0
  517. package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
  518. package/dist/utc/validate/isValidHttpDate.js +38 -0
  519. package/dist/utc/validate/isValidUtc.d.ts +4 -0
  520. package/dist/utc/validate/isValidUtc.js +4 -0
  521. package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
  522. package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
  523. package/dist/zoned/calculate/addZoned.js +4 -7
  524. package/dist/zoned/calculate/setZoned.d.ts +19 -5
  525. package/dist/zoned/calculate/setZoned.js +26 -9
  526. package/dist/zoned/calculate/subtractZoned.js +4 -7
  527. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +4 -1
  528. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +4 -1
  529. package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
  530. package/dist/zoned/convert/convertZonedToZoned.js +5 -1
  531. package/dist/zoned/format/formatCalendarZoned.js +2 -1
  532. package/dist/zoned/format/formatRelativeZoned.js +2 -1
  533. package/dist/zoned/format/formatTimeZoneName.d.ts +5 -1
  534. package/dist/zoned/format/formatTimeZoneName.js +5 -1
  535. package/dist/zoned/get/getDstTransitions.d.ts +5 -3
  536. package/dist/zoned/get/getDstTransitions.js +12 -7
  537. package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
  538. package/dist/zoned/get/getSystemTimeZone.js +5 -2
  539. package/dist/zoned/get/getTimeZoneOffset.d.ts +10 -2
  540. package/dist/zoned/get/getTimeZoneOffset.js +18 -5
  541. package/dist/zoned/get/getZonedDay.d.ts +2 -1
  542. package/dist/zoned/get/getZonedDay.js +6 -7
  543. package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
  544. package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
  545. package/dist/zoned/get/getZonedHour.d.ts +2 -1
  546. package/dist/zoned/get/getZonedHour.js +6 -7
  547. package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
  548. package/dist/zoned/get/getZonedMicrosecond.js +6 -5
  549. package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
  550. package/dist/zoned/get/getZonedMillisecond.js +6 -7
  551. package/dist/zoned/get/getZonedMinute.d.ts +2 -1
  552. package/dist/zoned/get/getZonedMinute.js +6 -7
  553. package/dist/zoned/get/getZonedMonth.d.ts +2 -1
  554. package/dist/zoned/get/getZonedMonth.js +6 -7
  555. package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
  556. package/dist/zoned/get/getZonedNanosecond.js +6 -5
  557. package/dist/zoned/get/getZonedNow.d.ts +5 -1
  558. package/dist/zoned/get/getZonedNow.js +5 -1
  559. package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
  560. package/dist/zoned/get/getZonedNowUnit.js +10 -7
  561. package/dist/zoned/get/getZonedSecond.d.ts +2 -1
  562. package/dist/zoned/get/getZonedSecond.js +6 -7
  563. package/dist/zoned/get/getZonedToday.d.ts +2 -1
  564. package/dist/zoned/get/getZonedToday.js +6 -5
  565. package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
  566. package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
  567. package/dist/zoned/get/getZonedYear.d.ts +4 -1
  568. package/dist/zoned/get/getZonedYear.js +9 -7
  569. package/dist/zoned/interval/intervalXorAllZoned.js +2 -2
  570. package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
  571. package/dist/zoned/parse/parseUnitFromZoned.d.ts +4 -1
  572. package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
  573. package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
  574. package/dist/zoned/parse/parseYearFromZoned.js +6 -3
  575. package/dist/zoned/validate/hasDaylightSaving.d.ts +4 -2
  576. package/dist/zoned/validate/hasDaylightSaving.js +13 -7
  577. package/dist/zoned/validate/index.d.ts +2 -0
  578. package/dist/zoned/validate/index.js +2 -0
  579. package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
  580. package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
  581. package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
  582. package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
  583. package/dist/zoned/validate/isValidTimeZone.d.ts +5 -1
  584. package/dist/zoned/validate/isValidTimeZone.js +6 -2
  585. package/package.json +50 -1
  586. package/skills/gmt-arithmetic/SKILL.md +99 -12
  587. package/skills/gmt-basics/SKILL.md +57 -15
  588. package/skills/gmt-integration/SKILL.md +24 -9
  589. package/skills/gmt-timezone/SKILL.md +134 -29
  590. package/dist/internal/unixZonedDateTime.d.ts +0 -22
  591. package/dist/internal/unixZonedDateTime.js +0 -32
  592. package/dist/internal/utcZonedDateTime.d.ts +0 -19
  593. package/dist/internal/utcZonedDateTime.js +0 -31
@@ -1,12 +1,14 @@
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 { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
+ import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Convert a UTC datetime string to a plain date string in the format "YYYY-MM-DD".
8
8
  *
9
9
  * - Converts to the `timeZone` option's zone before extracting the date.
10
+ * - A year outside 0000–9999 is written with a sign and six digits (`+010000`, `-000005`), as
11
+ * Temporal writes it, so the result is always a string `isValidDate` accepts.
10
12
  * - Returns "" for invalid input.
11
13
  *
12
14
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
@@ -16,23 +18,24 @@ import { isOptionsArgument } from "../../internal/isObject.js";
16
18
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z") // "2024-02-29"
17
19
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "2024-02-28"
18
20
  * @example convertUtcToPlainDate("invalid") // ""
21
+ * @example convertUtcToPlainDate("+010000-01-01T00:00:00Z") // "+010000-01-01" (a year past 9999 has a sign and six digits)
22
+ * @example convertUtcToPlainDate("1970-01-01T00:30:00Z", { timeZone: "-00:44:30" }) // "1969-12-31" (a stored offset with seconds)
19
23
  */
20
24
  export function convertUtcToPlainDate(value, options) {
21
25
  try {
22
26
  if (!isOptionsArgument(options)) {
23
27
  return "";
24
28
  }
25
- const timeZone = normalizeTimeZone(options?.timeZone);
26
- if (timeZone === "")
29
+ const frame = normalizeZoneFrame(options?.timeZone);
30
+ if (frame === null)
27
31
  return "";
28
32
  if (!isValidUtc(value))
29
33
  return "";
30
34
  try {
31
35
  const instant = Temporal.Instant.from(value);
32
- const zonedDateTime = instant.toZonedDateTimeISO(timeZone);
33
- return `${zonedDateTime.year.toString().padStart(4, "0")}-${zonedDateTime.month
34
- .toString()
35
- .padStart(2, "0")}-${zonedDateTime.day.toString().padStart(2, "0")}`;
36
+ const wallClock = frameWallClock(instant, frame);
37
+ // Temporal writes the date, so a year outside 0000 to 9999 gets its sign and six digits.
38
+ return wallClock.toPlainDate().toString();
36
39
  }
37
40
  catch {
38
41
  return "";
@@ -2,6 +2,9 @@
2
2
  * Convert a UTC datetime string to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
3
3
  *
4
4
  * - Converts to the `timeZone` option's zone before extracting the datetime.
5
+ * - The time is cut to the second: a fraction of a second in `value` is dropped.
6
+ * - A year outside 0000–9999 is written with a sign and six digits (`+010000`, `-000005`), as
7
+ * Temporal writes it, so the result is always a string `isValidDateTime` accepts.
5
8
  * - Returns "" for invalid input.
6
9
  *
7
10
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
@@ -11,11 +14,15 @@
11
14
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z") // "2024-02-29T00:00:00"
12
15
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "2024-02-28T19:00:00"
13
16
  * @example convertUtcToPlainDateTime("invalid") // ""
17
+ * @example convertUtcToPlainDateTime("+010000-01-01T00:00:00Z") // "+010000-01-01T00:00:00" (a year past 9999 has a sign and six digits)
18
+ * @example convertUtcToPlainDateTime("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" }) // "1970-01-01T12:00:00" (a stored offset with seconds)
14
19
  */
15
20
  export declare function convertUtcToPlainDateTime(value: string, options?: {
16
21
  /**
17
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
- * the system time zone. An unknown zone returns `""`.
22
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
23
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
24
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
25
+ * `""`.
19
26
  *
20
27
  * @defaultValue `"UTC"`
21
28
  */
@@ -1,12 +1,15 @@
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 { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
+ import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Convert a UTC datetime string to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
8
8
  *
9
9
  * - Converts to the `timeZone` option's zone before extracting the datetime.
10
+ * - The time is cut to the second: a fraction of a second in `value` is dropped.
11
+ * - A year outside 0000–9999 is written with a sign and six digits (`+010000`, `-000005`), as
12
+ * Temporal writes it, so the result is always a string `isValidDateTime` accepts.
10
13
  * - Returns "" for invalid input.
11
14
  *
12
15
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
@@ -16,29 +19,25 @@ import { isOptionsArgument } from "../../internal/isObject.js";
16
19
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z") // "2024-02-29T00:00:00"
17
20
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "2024-02-28T19:00:00"
18
21
  * @example convertUtcToPlainDateTime("invalid") // ""
22
+ * @example convertUtcToPlainDateTime("+010000-01-01T00:00:00Z") // "+010000-01-01T00:00:00" (a year past 9999 has a sign and six digits)
23
+ * @example convertUtcToPlainDateTime("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" }) // "1970-01-01T12:00:00" (a stored offset with seconds)
19
24
  */
20
25
  export function convertUtcToPlainDateTime(value, options) {
21
26
  try {
22
27
  if (!isOptionsArgument(options)) {
23
28
  return "";
24
29
  }
25
- const timeZone = normalizeTimeZone(options?.timeZone);
26
- if (timeZone === "")
30
+ const frame = normalizeZoneFrame(options?.timeZone);
31
+ if (frame === null)
27
32
  return "";
28
33
  if (!isValidUtc(value))
29
34
  return "";
30
35
  try {
31
36
  const instant = Temporal.Instant.from(value);
32
- const zonedDateTime = instant.toZonedDateTimeISO(timeZone);
33
- return `${zonedDateTime.year.toString().padStart(4, "0")}-${zonedDateTime.month
34
- .toString()
35
- .padStart(2, "0")}-${zonedDateTime.day
36
- .toString()
37
- .padStart(2, "0")}T${zonedDateTime.hour
38
- .toString()
39
- .padStart(2, "0")}:${zonedDateTime.minute
40
- .toString()
41
- .padStart(2, "0")}:${zonedDateTime.second.toString().padStart(2, "0")}`;
37
+ const wallClock = frameWallClock(instant, frame);
38
+ // Temporal writes the date-time, so a year outside 0000 to 9999 gets its sign and six
39
+ // digits. `smallestUnit: "second"` always prints the seconds and cuts off any fraction.
40
+ return wallClock.toString({ smallestUnit: "second" });
42
41
  }
43
42
  catch {
44
43
  return "";
@@ -11,11 +11,14 @@
11
11
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z") // "00:00:00"
12
12
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "19:00:00"
13
13
  * @example convertUtcToPlainTime("invalid") // ""
14
+ * @example convertUtcToPlainTime("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
14
15
  */
15
16
  export declare function convertUtcToPlainTime(value: string, options?: {
16
17
  /**
17
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
- * the system time zone. An unknown zone returns `""`.
18
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
19
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
20
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
21
+ * `""`.
19
22
  *
20
23
  * @defaultValue `"UTC"`
21
24
  */
@@ -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 { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
+ import { frameWallClock, normalizeZoneFrame } from "../../internal/zoneFrame.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
@@ -16,23 +16,24 @@ import { isOptionsArgument } from "../../internal/isObject.js";
16
16
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z") // "00:00:00"
17
17
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "19:00:00"
18
18
  * @example convertUtcToPlainTime("invalid") // ""
19
+ * @example convertUtcToPlainTime("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
19
20
  */
20
21
  export function convertUtcToPlainTime(value, options) {
21
22
  try {
22
23
  if (!isOptionsArgument(options)) {
23
24
  return "";
24
25
  }
25
- const timeZone = normalizeTimeZone(options?.timeZone);
26
- if (timeZone === "")
26
+ const frame = normalizeZoneFrame(options?.timeZone);
27
+ if (frame === null)
27
28
  return "";
28
29
  if (!isValidUtc(value))
29
30
  return "";
30
31
  try {
31
32
  const instant = Temporal.Instant.from(value);
32
- const zonedDateTime = instant.toZonedDateTimeISO(timeZone);
33
- return `${zonedDateTime.hour.toString().padStart(2, "0")}:${zonedDateTime.minute
33
+ const wallClock = frameWallClock(instant, frame);
34
+ return `${wallClock.hour.toString().padStart(2, "0")}:${wallClock.minute
34
35
  .toString()
35
- .padStart(2, "0")}:${zonedDateTime.second.toString().padStart(2, "0")}`;
36
+ .padStart(2, "0")}:${wallClock.second.toString().padStart(2, "0")}`;
36
37
  }
37
38
  catch {
38
39
  return "";
@@ -4,9 +4,13 @@
4
4
  * - Uses Temporal.Instant.from to parse, converts to specified timezone.
5
5
  * - Validates both UTC input and timezone.
6
6
  * - Returns "" for invalid input.
7
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
8
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
9
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
10
+ * bracket.
7
11
  *
8
12
  * @param value UTC Instant string
9
- * @param timeZone IANA name or UTC offset
13
+ * @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
10
14
  * @returns zoned ISO 8601 string or "" on invalid
11
15
  *
12
16
  * @example convertUtcToZoned("2024-02-29T00:00:00Z", "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -7,9 +7,13 @@ import { isValidUtc } from "../validate/index.js";
7
7
  * - Uses Temporal.Instant.from to parse, converts to specified timezone.
8
8
  * - Validates both UTC input and timezone.
9
9
  * - Returns "" for invalid input.
10
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
11
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
12
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
13
+ * bracket.
10
14
  *
11
15
  * @param value UTC Instant string
12
- * @param timeZone IANA name or UTC offset
16
+ * @param timeZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts)
13
17
  * @returns zoned ISO 8601 string or "" on invalid
14
18
  *
15
19
  * @example convertUtcToZoned("2024-02-29T00:00:00Z", "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -6,8 +6,8 @@ import type { CalendarOptions } from "../../types/index.js";
6
6
  export interface FormatCalendarUtcOptions extends CalendarOptions {
7
7
  /**
8
8
  * The time zone used for both the calendar-day comparison and the rendered clock time: an IANA
9
- * name, a UTC offset, or `"local"` for the system time zone. An unknown zone returns `""`, as
10
- * ECMA-402 throws RangeError for it.
9
+ * name, a UTC offset to the minute (what `isValidTimeZone` accepts), or `"local"` for the system
10
+ * time zone. An unknown zone returns `""`, as ECMA-402 throws RangeError for it.
11
11
  *
12
12
  * @defaultValue `"UTC"`
13
13
  */
@@ -29,6 +29,10 @@ export interface FormatCalendarUtcOptions extends CalendarOptions {
29
29
  *
30
30
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
31
31
  * rejects it.
32
+ * - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
33
+ * identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
34
+ * `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
35
+ * Node, throw a RangeError exception"). Pass the IANA name.
32
36
  *
33
37
  * @param value UTC ISO string to format
34
38
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -4,6 +4,7 @@ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { toInstantFromUtc, toReferenceInstantFromUtc, } from "../../internal/toInstantFromUtc.js";
5
5
  import { isValidUtc } from "../validate/index.js";
6
6
  import { optionOrDefault } from "../../internal/optionOrDefault.js";
7
+ import { isObject } from "../../internal/isObject.js";
7
8
  /**
8
9
  * Format a UTC ISO string as a relative day label plus time-of-day, e.g.
9
10
  * "Tomorrow at 2:30 PM" — the UTC counterpart of `formatCalendar`. See that
@@ -12,6 +13,10 @@ import { optionOrDefault } from "../../internal/optionOrDefault.js";
12
13
  *
13
14
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
14
15
  * rejects it.
16
+ * - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
17
+ * identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
18
+ * `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
19
+ * Node, throw a RangeError exception"). Pass the IANA name.
15
20
  *
16
21
  * @param value UTC ISO string to format
17
22
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -28,7 +33,7 @@ export function formatCalendarUtc(value, locale, options = {}) {
28
33
  try {
29
34
  // Temporal GetOptionsObject: undefined is defaults (the parameter default); anything else that is
30
35
  // not an object, including null, is a TypeError.
31
- if (options === null || typeof options !== "object")
36
+ if (!isObject(options))
32
37
  return "";
33
38
  if (!isValidUtc(value))
34
39
  return "";
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Format a UTC ISO 8601 datetime string as an RFC 9110 IMF-fixdate — the
3
- * fixed grammar HTTP headers like `Last-Modified`/`Date`/`Expires` require.
2
+ * Format a UTC ISO 8601 datetime string as an HTTP header date — the RFC 9110
3
+ * IMF-fixdate that headers like `Last-Modified`/`Date`/`Expires` require.
4
4
  *
5
5
  * - **Fixed grammar, not a display format.** RFC 9110 mandates English
6
6
  * weekday/month abbreviations and a literal `GMT` suffix regardless of
@@ -19,10 +19,10 @@
19
19
  * @param value UTC ISO 8601 datetime string (e.g. "2024-03-15T14:30:00Z")
20
20
  * @returns RFC 9110 IMF-fixdate string, or "" on invalid input or a year outside 0000–9999
21
21
  *
22
- * @example formatHttp("2024-03-15T14:30:00Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
23
- * @example formatHttp("2024-03-15T14:30:00.500Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
24
- * @example formatHttp("-000001-06-15T12:00:00Z") // ""
22
+ * @example formatHttpDate("2024-03-15T14:30:00Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
23
+ * @example formatHttpDate("2024-03-15T14:30:00.500Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
24
+ * @example formatHttpDate("-000001-06-15T12:00:00Z") // ""
25
25
  * @example Temporal.Instant.from("-000001-06-15T12:00:00Z").toString() // "-000001-06-15T12:00:00Z"
26
- * @example formatHttp("invalid") // ""
26
+ * @example formatHttpDate("invalid") // ""
27
27
  */
28
- export declare function formatHttp(value: string): string;
28
+ export declare function formatHttpDate(value: string): string;
@@ -2,8 +2,8 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import { englishDateTimeStem } from "../../internal/englishCalendarNames.js";
3
3
  import { isValidUtc } from "../validate/index.js";
4
4
  /**
5
- * Format a UTC ISO 8601 datetime string as an RFC 9110 IMF-fixdate — the
6
- * fixed grammar HTTP headers like `Last-Modified`/`Date`/`Expires` require.
5
+ * Format a UTC ISO 8601 datetime string as an HTTP header date — the RFC 9110
6
+ * IMF-fixdate that headers like `Last-Modified`/`Date`/`Expires` require.
7
7
  *
8
8
  * - **Fixed grammar, not a display format.** RFC 9110 mandates English
9
9
  * weekday/month abbreviations and a literal `GMT` suffix regardless of
@@ -22,13 +22,13 @@ import { isValidUtc } from "../validate/index.js";
22
22
  * @param value UTC ISO 8601 datetime string (e.g. "2024-03-15T14:30:00Z")
23
23
  * @returns RFC 9110 IMF-fixdate string, or "" on invalid input or a year outside 0000–9999
24
24
  *
25
- * @example formatHttp("2024-03-15T14:30:00Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
26
- * @example formatHttp("2024-03-15T14:30:00.500Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
27
- * @example formatHttp("-000001-06-15T12:00:00Z") // ""
25
+ * @example formatHttpDate("2024-03-15T14:30:00Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
26
+ * @example formatHttpDate("2024-03-15T14:30:00.500Z") // "Fri, 15 Mar 2024 14:30:00 GMT"
27
+ * @example formatHttpDate("-000001-06-15T12:00:00Z") // ""
28
28
  * @example Temporal.Instant.from("-000001-06-15T12:00:00Z").toString() // "-000001-06-15T12:00:00Z"
29
- * @example formatHttp("invalid") // ""
29
+ * @example formatHttpDate("invalid") // ""
30
30
  */
31
- export function formatHttp(value) {
31
+ export function formatHttpDate(value) {
32
32
  if (!isValidUtc(value))
33
33
  return "";
34
34
  try {
@@ -20,9 +20,10 @@ export interface FormatRelativeUtcOptions extends RelativeTimeFormatOptions {
20
20
  */
21
21
  reference?: string;
22
22
  /**
23
- * The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset,
24
- * or `"local"` for the system time zone. An unknown zone returns `""` whatever the unit, as
25
- * ECMA-402 throws RangeError for it.
23
+ * The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset (a
24
+ * time zone identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
25
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
26
+ * `""` whatever the unit.
26
27
  *
27
28
  * @defaultValue `"UTC"`
28
29
  */
@@ -39,6 +40,12 @@ export interface FormatRelativeUtcOptions extends RelativeTimeFormatOptions {
39
40
  * other value returns `""`.
40
41
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
41
42
  * rejects it.
43
+ * - **Limit at an offset with seconds.** A month or a year is measured from `reference`, placed in
44
+ * the offset's whole-minute zone and moved by its seconds, and the moved instant must be inside
45
+ * Temporal's range. So when one is measured and `reference` is within the offset's seconds (under
46
+ * a minute) of the last instant Temporal supports (`+275760-09-13T00:00:00Z`) for an offset east
47
+ * of UTC, or of the first (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset
48
+ * to the minute has no such limit.
42
49
  *
43
50
  * @param value UTC ISO string to format
44
51
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -51,5 +58,6 @@ export interface FormatRelativeUtcOptions extends RelativeTimeFormatOptions {
51
58
  * @example formatRelativeUtc("2026-01-15T14:30:45Z", "en-US", null as never) // ""
52
59
  * @example formatRelativeUtc("not-a-date") // ""
53
60
  * @example formatRelativeUtc("2024-03-15T11:30:00Z", ["fr-FR", "en-US"], { reference: "2024-03-15T12:00:00Z" }) // "il y a 30 minutes"
61
+ * @example formatRelativeUtc("1970-01-03T12:00:00Z", "en-US", { reference: "1970-01-01T12:00:00Z", timeZone: "-00:44:30" }) // "in 2 days" (a stored offset with seconds)
54
62
  */
55
63
  export declare function formatRelativeUtc(value: string, locale?: string | string[], options?: FormatRelativeUtcOptions): string;
@@ -1,9 +1,10 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { formatRelativeDuration } from "../../internal/formatRelativeDuration.js";
3
- import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
+ import { frameZoned, normalizeZoneFrame } from "../../internal/zoneFrame.js";
4
4
  import { toInstantFromUtc, toReferenceInstantFromUtc, } from "../../internal/toInstantFromUtc.js";
5
5
  import { durationTotal } from "../../internal/zonedWallClockDifference.js";
6
6
  import { isValidUtc } from "../validate/index.js";
7
+ import { isObject } from "../../internal/isObject.js";
7
8
  /**
8
9
  * Format the relative time between a UTC ISO string and a reference instant.
9
10
  *
@@ -15,6 +16,12 @@ import { isValidUtc } from "../validate/index.js";
15
16
  * other value returns `""`.
16
17
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
17
18
  * rejects it.
19
+ * - **Limit at an offset with seconds.** A month or a year is measured from `reference`, placed in
20
+ * the offset's whole-minute zone and moved by its seconds, and the moved instant must be inside
21
+ * Temporal's range. So when one is measured and `reference` is within the offset's seconds (under
22
+ * a minute) of the last instant Temporal supports (`+275760-09-13T00:00:00Z`) for an offset east
23
+ * of UTC, or of the first (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset
24
+ * to the minute has no such limit.
18
25
  *
19
26
  * @param value UTC ISO string to format
20
27
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -27,17 +34,18 @@ import { isValidUtc } from "../validate/index.js";
27
34
  * @example formatRelativeUtc("2026-01-15T14:30:45Z", "en-US", null as never) // ""
28
35
  * @example formatRelativeUtc("not-a-date") // ""
29
36
  * @example formatRelativeUtc("2024-03-15T11:30:00Z", ["fr-FR", "en-US"], { reference: "2024-03-15T12:00:00Z" }) // "il y a 30 minutes"
37
+ * @example formatRelativeUtc("1970-01-03T12:00:00Z", "en-US", { reference: "1970-01-01T12:00:00Z", timeZone: "-00:44:30" }) // "in 2 days" (a stored offset with seconds)
30
38
  */
31
39
  export function formatRelativeUtc(value, locale, options = {}) {
32
40
  try {
33
41
  // Temporal GetOptionsObject: undefined is defaults (the parameter default); anything else that is
34
42
  // not an object, including null, is a TypeError.
35
- if (options === null || typeof options !== "object")
43
+ if (!isObject(options))
36
44
  return "";
37
45
  if (!isValidUtc(value))
38
46
  return "";
39
- const tz = normalizeTimeZone(options.timeZone);
40
- if (!tz)
47
+ const frame = normalizeZoneFrame(options.timeZone);
48
+ if (frame === null)
41
49
  return "";
42
50
  // Each option is read once (GetOption).
43
51
  const referenceOption = options.reference;
@@ -52,7 +60,7 @@ export function formatRelativeUtc(value, locale, options = {}) {
52
60
  try {
53
61
  const diff = target.since(reference);
54
62
  // Only a calendrical unit (month, year) reads the anchor, so the zone is applied lazily.
55
- return formatRelativeDuration(diff, locale, options, (unit) => durationTotal(diff, unit, reference.toZonedDateTimeISO(tz)));
63
+ return formatRelativeDuration(diff, locale, options, (unit) => durationTotal(diff, unit, frameZoned(reference, frame)));
56
64
  }
57
65
  catch {
58
66
  return "";
@@ -9,8 +9,9 @@
9
9
  */
10
10
  export interface FormatUtcOptions extends Intl.DateTimeFormatOptions {
11
11
  /**
12
- * The time zone the value is rendered in: an IANA name, a UTC offset, or `"local"` for the system
13
- * time zone. An unknown zone returns `""`, as ECMA-402 throws RangeError for it.
12
+ * The time zone the value is rendered in: an IANA name, a UTC offset to the minute (what
13
+ * `isValidTimeZone` accepts), or `"local"` for the system time zone. An unknown zone returns
14
+ * `""`, as ECMA-402 throws RangeError for it.
14
15
  *
15
16
  * @defaultValue `"UTC"`
16
17
  */
@@ -35,6 +36,10 @@ export interface FormatUtcOptions extends Intl.DateTimeFormatOptions {
35
36
  * the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
36
37
  * `includeTimeZoneName` returned `""`. Pass the fields the old text showed to keep it.
37
38
  * - `options` null returns `""`, as ECMA-402's CoerceOptionsToObject rejects it.
39
+ * - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
40
+ * identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
41
+ * `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
42
+ * Node, throw a RangeError exception"). Pass the IANA name.
38
43
  *
39
44
  * @param value UTC ISO string to format
40
45
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -17,6 +17,10 @@ import { optionOrDefault } from "../../internal/optionOrDefault.js";
17
17
  * the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
18
18
  * `includeTimeZoneName` returned `""`. Pass the fields the old text showed to keep it.
19
19
  * - `options` null returns `""`, as ECMA-402's CoerceOptionsToObject rejects it.
20
+ * - An offset with seconds (`-00:44:30`) returns `""`. `Intl.DateTimeFormat` takes a time zone
21
+ * identifier only: constructing one with an offset that has seconds throws (ECMA-402, the
22
+ * `DateTimeFormat` construction step "If parseResult contains more than one MinuteSecond Parse
23
+ * Node, throw a RangeError exception"). Pass the IANA name.
20
24
  *
21
25
  * @param value UTC ISO string to format
22
26
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
@@ -1,4 +1,4 @@
1
1
  export * from "./formatCalendarUtc.js";
2
- export * from "./formatHttp.js";
2
+ export * from "./formatHttpDate.js";
3
3
  export * from "./formatRelativeUtc.js";
4
4
  export * from "./formatUtc.js";
@@ -1,4 +1,4 @@
1
1
  export * from "./formatCalendarUtc.js";
2
- export * from "./formatHttp.js";
2
+ export * from "./formatHttpDate.js";
3
3
  export * from "./formatRelativeUtc.js";
4
4
  export * from "./formatUtc.js";
@@ -3,11 +3,9 @@
3
3
  *
4
4
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
5
5
  * - Returns zero-padded string to 2 digits.
6
- * - Returns "" on failure.
7
6
  *
8
- * @returns current day string (zero-padded to 2 digits) or "" on failure
7
+ * @returns current day string (zero-padded to 2 digits)
9
8
  *
10
9
  * @example getUtcDay() // "29"
11
- * @example getUtcDay() // "" (on failure)
12
10
  */
13
11
  export declare function getUtcDay(): string;
@@ -4,21 +4,14 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
6
6
  * - Returns zero-padded string to 2 digits.
7
- * - Returns "" on failure.
8
7
  *
9
- * @returns current day string (zero-padded to 2 digits) or "" on failure
8
+ * @returns current day string (zero-padded to 2 digits)
10
9
  *
11
10
  * @example getUtcDay() // "29"
12
- * @example getUtcDay() // "" (on failure)
13
11
  */
14
12
  export function getUtcDay() {
15
- try {
16
- return Temporal.Now.instant()
17
- .toZonedDateTimeISO("UTC")
18
- .day.toString()
19
- .padStart(2, "0");
20
- }
21
- catch {
22
- return "";
23
- }
13
+ return Temporal.Now.instant()
14
+ .toZonedDateTimeISO("UTC")
15
+ .day.toString()
16
+ .padStart(2, "0");
24
17
  }
@@ -3,11 +3,9 @@
3
3
  *
4
4
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
5
5
  * - Returns zero-padded string to 2 digits.
6
- * - Returns "" on failure.
7
6
  *
8
- * @returns current hour string (zero-padded to 2 digits) or "" on failure
7
+ * @returns current hour string (zero-padded to 2 digits)
9
8
  *
10
9
  * @example getUtcHour() // "00"
11
- * @example getUtcHour() // "" (on failure)
12
10
  */
13
11
  export declare function getUtcHour(): string;
@@ -4,21 +4,14 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
6
6
  * - Returns zero-padded string to 2 digits.
7
- * - Returns "" on failure.
8
7
  *
9
- * @returns current hour string (zero-padded to 2 digits) or "" on failure
8
+ * @returns current hour string (zero-padded to 2 digits)
10
9
  *
11
10
  * @example getUtcHour() // "00"
12
- * @example getUtcHour() // "" (on failure)
13
11
  */
14
12
  export function getUtcHour() {
15
- try {
16
- return Temporal.Now.instant()
17
- .toZonedDateTimeISO("UTC")
18
- .hour.toString()
19
- .padStart(2, "0");
20
- }
21
- catch {
22
- return "";
23
- }
13
+ return Temporal.Now.instant()
14
+ .toZonedDateTimeISO("UTC")
15
+ .hour.toString()
16
+ .padStart(2, "0");
24
17
  }
@@ -3,11 +3,9 @@
3
3
  *
4
4
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
5
5
  * - Returns zero-padded string to 3 digits.
6
- * - Returns "" on failure.
7
6
  *
8
- * @returns current microsecond string (zero-padded to 3 digits) or "" on failure
7
+ * @returns current microsecond string (zero-padded to 3 digits)
9
8
  *
10
9
  * @example getUtcMicrosecond() // "456"
11
- * @example getUtcMicrosecond() // "" (on failure)
12
10
  */
13
11
  export declare function getUtcMicrosecond(): string;
@@ -4,20 +4,13 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
6
6
  * - Returns zero-padded string to 3 digits.
7
- * - Returns "" on failure.
8
7
  *
9
- * @returns current microsecond string (zero-padded to 3 digits) or "" on failure
8
+ * @returns current microsecond string (zero-padded to 3 digits)
10
9
  *
11
10
  * @example getUtcMicrosecond() // "456"
12
- * @example getUtcMicrosecond() // "" (on failure)
13
11
  */
14
12
  export function getUtcMicrosecond() {
15
- try {
16
- return (Temporal.Now.instant().toZonedDateTimeISO("UTC").microsecond ?? 0)
17
- .toString()
18
- .padStart(3, "0");
19
- }
20
- catch {
21
- return "";
22
- }
13
+ return (Temporal.Now.instant().toZonedDateTimeISO("UTC").microsecond ?? 0)
14
+ .toString()
15
+ .padStart(3, "0");
23
16
  }
@@ -3,11 +3,9 @@
3
3
  *
4
4
  * - Uses Temporal.Now.instant() converted to UTC zoned date time.
5
5
  * - Returns zero-padded string to 3 digits.
6
- * - Returns "" on failure.
7
6
  *
8
- * @returns current millisecond string (zero-padded to 3 digits) or "" on failure
7
+ * @returns current millisecond string (zero-padded to 3 digits)
9
8
  *
10
9
  * @example getUtcMillisecond() // "123"
11
- * @example getUtcMillisecond() // "" (on failure)
12
10
  */
13
11
  export declare function getUtcMillisecond(): string;