Previous: srfi time spec conversion, Up: srfi time spec [Index]
The following procedures provide conversion to and from strings. They are required. The specification below describes a “locale”; the specification of locales is beyond this SRFI.
Converts a date to a string, using the format string. The format string is copied as is; except escape characters (indicated by the tilde) are replaced with specific conversions. The following table lists the required conversion specifiers; implementations are free to extend this list.
| Escape Char | Conversion |
|---|---|
| ~~ | a literal ~ |
| ~a | locale’s abbreviated weekday name (Sun...Sat) |
| ~A | locale’s full weekday name (Sunday...Saturday) |
| ~b | locale’s abbreviate month name (Jan...Dec) |
| ~B | locale’s full month day (January...December) |
| ~c | locale’s date and time (e.g., "Fri Jul 14 20:28:42-0400 2000") |
| ~d | day of month, zero padded (01...31) |
| ~D | date (mm/dd/yy) |
| ~e | day of month, blank padded ( 1...31) |
| ~f | seconds+fractional seconds, using locale’s decimal separator (e.g. 5.2). |
| ~h | same as ~b |
| ~H | hour, zero padded, 24-hour clock (00...23) |
| ~I | hour, zero padded, 12-hour clock (01...12) |
| ~j | day of year, zero padded |
| ~k | hour, blank padded, 24-hour clock (00...23) |
| ~l | hour, blank padded, 12-hour clock (01...12) |
| ~m | month, zero padded (01...12) |
| ~M | minute, zero padded (00...59) |
| ~n | new line |
| ~N | nanosecond, zero padded |
| ~p | locale’s AM or PM |
| ~r | time, 12 hour clock, same as "~I:~M:~S ~p" |
| ~s | number of full seconds since "the epoch" (in UTC) |
| ~S | second, zero padded (00...60) |
| ~t | horizontal tab |
| ~T | time, 24 hour clock, same as "~H:~M:~S" |
| ~U | week number of year with Sunday as first day of week (00...53) |
| ~V | week number of year with Monday as first day of week (01...52) |
| ~w | day of week (0...6) |
| ~W | week number of year with Monday as first day of week (01...52) |
| ~x | week number of year with Monday as first day of week (00...53) |
| ~X | locale’s date representation, for example: "07/31/00" |
| ~y | last two digits of year (00...99) |
| ~Y | year |
| ~z | time zone in RFC-822 style |
| ~Z | symbol time zone (not–implemented) |
| ~1 | ISO–8601 year–month–day format |
| ~2 | ISO–8601 hour–minute–second-timezone format |
| ~3 | ISO–8601 hour–minute–second format |
| ~4 | ISO–8601 year–month–day–hour–minute–second–timezone format |
| ~5 | ISO–8601 year–month–day–hour–minute–second format |
Convert an input string to a date, using the template string. The input string must match the template string as is; except escape characters (preceded by a the tilde) indicate special converters which (1) move to the next character in the input string fulfilling a criterion; (2) read a value, and (3) act on this value in some way. The table below lists the required converters; implementations are free to extend this list.
| Escape | Skip to | Read | Contract |
|---|---|---|---|
| ~~ | any | read literal ~ | nothing |
| ~a | char-alphabetic? | abbreviated weekday in locale | nothing |
| ~A | char-alphabetic? | full weekday in locale | nothing |
| ~b | char-alphabetic? | abbreviated month name in locale | nothing |
| ~B | char-alphabetic? | full month name in locale | nothing |
| ~d | char-numeric? | day of month | date–day |
| ~e | any | day of month, blank padded | date–day |
| ~h | char-alphabetic? | same as ~b | nothing |
| ~H | char-numeric? | hour | date–hour |
| ~k | any | hour, blank padded | date–hour |
| ~m | char-numeric? | month | date–month |
| ~M | char-numeric? | minute | date–minute |
| ~S | char-numeric? | second | date–second |
| ~y | any | 2–digit year | date–year within 50 years |
| ~Y | char-numeric? | year | date-year |
| ~z | any | time zone | date–zone–offset |
Previous: srfi time spec conversion, Up: srfi time spec [Index]