•date — Dates

•date text reads a date and time as a moment: the seconds since the Unix epoch, midnight UTC on 1 January 1970. Without a pattern it reads ISO 8601: RFC 3339 text such as "2024-05-06T10:20:30Z", a date and time with no offset, or a date alone. An array of texts gives an array of moments. •time 0 is the current moment.

•date⁻¹ t writes the moment t as a record of fields named after chrono’s: year, month, day, hour, minute, second, nanosecond, weekday (1 for Monday), ordinal (the day of the year) and iso_week. For an array of moments, each field is an array. •date reads such a record back from its first seven fields. A missing month or day is 1, and a missing time field is 0. •date ignores weekday, ordinal and iso_week.

A pattern on the left reads or writes text in another layout, with chrono’s strftime specifiers, such as %Y-%m-%d. The options are pattern, zone and, for •date⁻¹ only, locale. zone is "local" or a whole number of seconds east of UTC. It applies to text and fields without an offset, and is UTC by default. locale is a POSIX locale, such as "fr_FR", for month and weekday names.

The browser build has no locale option.

•date "2024-05-06T10:20:30Z"                     ⍝ 1714990830
"%d %B %Y" •date⁻¹ 1714990830                     ⍝ "06 May 2024"
["pattern":"%A" "locale":"fr_FR"] •date⁻¹ 0       ⍝ "jeudi"
(•date⁻¹ 0).weekday                               ⍝ 4ₓ
86400+ @ "%Y-%m-%d"↣•date "2024-05-06"          ⍝ "2024-05-07"

Errors: DOMAIN for text that the pattern doesn’t match, an invalid date, an unknown field or locale, or an invalid pattern.