ClojureDocs

Nav

Namespaces

parse-timestamp

  • (parse-timestamp new-instant cs)
Parse a string containing an RFC3339-like like timestamp.

The function new-instant is called with the following arguments.
               min  max           default
              ---  ------------  -------
years          0           9999      N/A (s must provide years)
months         1             12        1
days           1             31        1 (actual max days depends
hours          0             23        0  on month and year)
minutes        0             59        0
seconds        0             60        0 (though 60 is only valid
nanoseconds    0      999999999        0  when minutes is 59)
offset-sign   -1              1        0
offset-hours   0             23        0
offset-minutes 0             59        0

These are all integers and will be non-nil. (The listed defaults
will be passed if the corresponding field is not present in s.)

Grammar (of s):
 date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                          ; month/year
time-hour       = 2DIGIT  ; 00-23
time-minute     = 2DIGIT  ; 00-59
time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap second
                          ; rules
time-secfrac    = '.' 1*DIGIT
time-numoffset  = ('+' / '-') time-hour ':' time-minute
time-offset     = 'Z' / time-numoffset
 time-part       = time-hour [ ':' time-minute [ ':' time-second
                  [time-secfrac] [time-offset] ] ]
 timestamp       = date-year [ '-' date-month [ '-' date-mday
                  [ 'T' time-part ] ] ]

Unlike RFC3339:
 - we only parse the timestamp format
- timestamp can elide trailing components
- time-offset is optional (defaults to +00:00)

Though time-offset is syntactically optional, a missing time-offset
will be treated as if the time-offset zero (+00:00) had been
specified.