@@ -197,5 +197,185 @@ error[RAD20008]: parse_epoch unit "milliseconds" is no longer valid
197197 = info: rad explain RAD20008
198198
199199
200+ ### EXIT ###
201+ 1
202+ ### TITLE ###
203+ Func ParseDateIsoDate
204+ ### INPUT ###
205+ a = parse_date("2026-03-22")
206+ print(a)
207+ ### STDOUT ###
208+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 0 , " minute" : 0 , " second" : 0 , " time" : " 00:00:00" , " epoch" : { " seconds" : 1774137600 , " millis" : 1774137600000 , " nanos" : 1774137600000000000 } }
209+
210+ ### TITLE ###
211+ Func ParseDateIsoDatetime
212+ ### INPUT ###
213+ a = parse_date("2026-03-22T14:30:00")
214+ print(a)
215+ ### STDOUT ###
216+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800000 , " nanos" : 1774189800000000000 } }
217+
218+ ### TITLE ###
219+ Func ParseDateIsoDatetimeZ
220+ ### INPUT ###
221+ a = parse_date("2026-03-22T14:30:00Z")
222+ print(a)
223+ ### STDOUT ###
224+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800000 , " nanos" : 1774189800000000000 } }
225+
226+ ### TITLE ###
227+ Func ParseDateIsoDatetimeOffset
228+ ### INPUT ###
229+ a = parse_date("2026-03-22T14:30:00+05:00")
230+ print(a)
231+ ### STDOUT ###
232+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 9 , " minute" : 30 , " second" : 0 , " time" : " 09:30:00" , " epoch" : { " seconds" : 1774171800 , " millis" : 1774171800000 , " nanos" : 1774171800000000000 } }
233+
234+ ### TITLE ###
235+ Func ParseDateSpaceDatetime
236+ ### INPUT ###
237+ a = parse_date("2026-03-22 14:30:00")
238+ print(a)
239+ ### STDOUT ###
240+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800000 , " nanos" : 1774189800000000000 } }
241+
242+ ### TITLE ###
243+ Func ParseDateFractionalSeconds
244+ ### INPUT ###
245+ a = parse_date("2026-03-22T14:30:00.123Z")
246+ print(a)
247+ ### STDOUT ###
248+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800123 , " nanos" : 1774189800123000000 } }
249+
250+ ### TITLE ###
251+ Func ParseDateWithFormat
252+ ### INPUT ###
253+ a = parse_date("22/03/2026", format="DD/MM/YYYY")
254+ print(a)
255+ ### STDOUT ###
256+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 0 , " minute" : 0 , " second" : 0 , " time" : " 00:00:00" , " epoch" : { " seconds" : 1774137600 , " millis" : 1774137600000 , " nanos" : 1774137600000000000 } }
257+
258+ ### TITLE ###
259+ Func ParseDateWithFormatDatetime
260+ ### INPUT ###
261+ a = parse_date("22.03.2026 14:30", format="DD.MM.YYYY HH:mm")
262+ print(a)
263+ ### STDOUT ###
264+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800000 , " nanos" : 1774189800000000000 } }
265+
266+ ### TITLE ###
267+ Func ParseDateWithTimezone
268+ ### INPUT ###
269+ a = parse_date("2026-03-22T14:30:00Z", tz="America/Chicago")
270+ print(a)
271+ ### STDOUT ###
272+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 9 , " minute" : 30 , " second" : 0 , " time" : " 09:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800000 , " nanos" : 1774189800000000000 } }
273+
274+ ### TITLE ###
275+ Func ParseDateErrorInvalidString
276+ ### INPUT ###
277+ a = parse_date("not-a-date") catch:
278+ print(a)
279+ a = parse_date("not-a-date")
280+ ### STDOUT ###
281+ Failed to parse date "not-a-date". Supported formats: YYYY-MM-DD, YYYY-MM-DDTHH:mm:ss, YYYY-MM-DD HH:mm:ss (with optional timezone offset and fractional seconds). Use 'format' to specify a custom format, e.g. parse_date("not-a-date", format="DD/MM/YYYY").
282+
283+ ### STDERR ###
284+ error[RAD20044]: Failed to parse date "not-a-date". Supported formats: YYYY-MM-DD, YYYY-MM-DDTHH:mm:ss, YYYY-MM-DD HH:mm:ss (with optional timezone offset and fractional seconds). Use 'format' to specify a custom format, e.g. parse_date("not-a-date", format="DD/MM/YYYY").
285+ --> <script >:3:5
286+ |
287+ 2 | print(a)
288+ 3 | a = parse_date("not-a-date")
289+ | ^^^^^^^^^^^^^^^^^^^^^^^^
290+ |
291+ = info: rad explain RAD20044
292+
293+
294+ ### EXIT ###
295+ 1
296+ ### TITLE ###
297+ Func ParseDateSpaceDatetimeWithTzOffset
298+ ### INPUT ###
299+ a = parse_date("2026-03-22 14:30:00+05:00")
300+ print(a)
301+ ### STDOUT ###
302+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 9 , " minute" : 30 , " second" : 0 , " time" : " 09:30:00" , " epoch" : { " seconds" : 1774171800 , " millis" : 1774171800000 , " nanos" : 1774171800000000000 } }
303+
304+ ### TITLE ###
305+ Func ParseDateSpaceDatetimeFractionalSeconds
306+ ### INPUT ###
307+ a = parse_date("2026-03-22 14:30:00.456")
308+ print(a)
309+ ### STDOUT ###
310+ { " date" : " 2026-03-22" , " year" : 2026 , " month" : 3 , " day" : 22 , " hour" : 14 , " minute" : 30 , " second" : 0 , " time" : " 14:30:00" , " epoch" : { " seconds" : 1774189800 , " millis" : 1774189800456 , " nanos" : 1774189800456000000 } }
311+
312+ ### TITLE ###
313+ Func ParseDateNoTzStringWithExplicitTz
314+ ### INPUT ###
315+ a = parse_date("2026-03-22T14:30:00", tz="UTC")
316+ print(a.epoch.seconds)
317+ ### STDOUT ###
318+ 1774189800
319+
320+ ### TITLE ###
321+ Func ParseDateCustomFormatWithTimezone
322+ ### INPUT ###
323+ a = parse_date("22/03/2026 14:30", format="DD/MM/YYYY HH:mm", tz="UTC")
324+ print(a.epoch.seconds)
325+ ### STDOUT ###
326+ 1774189800
327+
328+ ### TITLE ###
329+ Func ParseDateErrorInvalidFormat
330+ ### INPUT ###
331+ a = parse_date("2026-03-22", format="DD/MM/YYYY") catch:
332+ print(a)
333+ ### STDOUT ###
334+ Failed to parse date "2026-03-22" with format "DD/MM/YYYY"
335+
336+ ### TITLE ###
337+ Func ParseDateErrorFormatGarbageInput
338+ ### INPUT ###
339+ a = parse_date("not-a-date", format="DD/MM/YYYY") catch:
340+ print(a)
341+ ### STDOUT ###
342+ Failed to parse date "not-a-date" with format "DD/MM/YYYY"
343+
344+ ### TITLE ###
345+ Func ParseDateErrorEmptyString
346+ ### INPUT ###
347+ a = parse_date("") catch:
348+ print(a)
349+ ### STDOUT ###
350+ Cannot parse an empty date string
351+
352+ ### TITLE ###
353+ Func ParseDateErrorEmptyFormat
354+ ### INPUT ###
355+ a = parse_date("2026-03-22", format="") catch:
356+ print(a)
357+ ### STDOUT ###
358+ Cannot parse date with an empty format string
359+
360+ ### TITLE ###
361+ Func ParseDateErrorInvalidTimezone
362+ ### INPUT ###
363+ a = parse_date("2026-03-22", tz="bad") catch:
364+ print(a)
365+ a = parse_date("2026-03-22", tz="another bad one")
366+ ### STDOUT ###
367+ Invalid time zone 'bad'
368+
369+ ### STDERR ###
370+ error[RAD20009]: Invalid time zone 'another bad one'
371+ --> <script >:3:5
372+ |
373+ 2 | print(a)
374+ 3 | a = parse_date("2026-03-22", tz="another bad one")
375+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
376+ |
377+ = info: rad explain RAD20009
378+
379+
200380### EXIT ###
2013811
0 commit comments