Description
- The Calendar package has new commands for parsing and formatting Date and Time objects.
Formatting Dates and Times
- Use the Calendar:-Format command or the Calendar:-VariantFormat command to format a Date or UTC Time object as a string. You can do this in a locale-sensitive way by using the locale option.
- Codes codes for formatting and parsing are specified according to the Unicode Technical Standard #35, "Unicode Locale Data Markup Language (LDML)", Part 4 (Dates).
> |
Format( Today(), 'locale' = "fr" ); |
> |
Format( Today(), "yyyy.MM.dd G 'at' HH:mm:ss zzz" ); |
> |
Format( Today(), "yyyy.MM.dd G 'um' HH:mm:ss zzz", 'locale' = "de" ); |
> |
Format( Now( SystemUTCClock ), "K:mm a, z", 'locale' = "ja" ); |
> |
Format( Now( SystemUTCClock ), "hh 'o''clock' a, zzzz" ); |
- You can use a different (printf-like) formatting string by using the command VariantFormat.
- Unlike the similar command FormatTime in the StringTools package, the Calendar:-VariantFormat command supports the locale option, allowing you to format dates and times in a locale-sensitive way. Moreover, the Calendar package commands work directly with Date and UTC Time objects.
> |
VariantFormat( Today(), "%c" ); |
> |
VariantFormat( Today(), "%c", 'locale' = "id" ); |
> |
fmt := "EEEE, MMMM dd, yyyy GG, hh:mm:ss a": |
> |
DocumentTools:-Tabulate( map( loc -> Format( Today(), fmt, ':-locale' = loc ), << "en", "fr", "de" > | < "ks", "ja", "ko" >> ) ): |
Parsing Dates and Times
- As for formatting, there are new commands to parse dates in strings. These are Parse and VariantParse, corresponding to Format and VariantFormat, respectively.
- Both Parse and VariantParse support the locale option.
> |
s := Format( Today(), "EEEE, MMMM dd, yyyy GG, hh:mm:ss a", 'locale' = "id" ); |
> |
Parse( s, "EEEE, MMMM dd, yyyy GG, hh:mm:ss a", 'locale' = "id" ); |
> |
s := VariantFormat( Today(), "%c", 'locale' = "de" ); |
> |
VariantParse( s, "%c", 'locale' = "de" ); |
|
|