Calendar Package Updates in 2019
Description
Formatting Dates and Times
Parsing Dates and Times
The Calendar package has new commands for parsing and formatting Date and Time objects.
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 for formatting and parsing are specified according to the Unicode Technical Standard #35, "Unicode Locale Data Markup Language (LDML)", Part 4 (Dates).
with( Calendar ):
Format( Today() );
2024-03-01T15:45:49 UTC
Format( Today(), 'locale' = "fr" );
Format( Today(), "yyyy.MM.dd G 'at' HH:mm:ss zzz" );
2024.03.01 AD at 15:45:49 UTC
Format( Today(), "yyyy.MM.dd G 'um' HH:mm:ss zzz", 'locale' = "de" );
2024.03.01 n. Chr. um 15:45:49 UTC
Format( Now( SystemUTCClock ), "K:mm a, z", 'locale' = "ja" );
3:45 午後, UTC
Format( Now( SystemUTCClock ), "hh 'o''clock' a, zzzz" );
03 o'clock PM, Coordinated Universal Time
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" );
Fri Mar 01 15:45:49 2024
VariantFormat( Today(), "%c", 'locale' = "id" );
Jum Mar 01 15:45:49 2024
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" >> ) ):
Friday, March 01, 2024 AD, 03:45:49 PM
جُمہ, مارٕچ ۰۱, ۲۰۲۴ اے ڈی, ۰۳:۴۵:۴۹ PM
vendredi, mars 01, 2024 ap. J.-C., 03:45:49 PM
金曜日, 3月 01, 2024 西暦, 03:45:49 午後
Freitag, März 01, 2024 n. Chr., 03:45:49 PM
금요일, 3월 01, 2024 AD, 03:45:49 오후
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" );
s≔Jumat, Maret 01, 2024 M, 03:45:50 PM
Parse( s, "EEEE, MMMM dd, yyyy GG, hh:mm:ss a", 'locale' = "id" );
<Date: 2024-03-01T15:45:50 GMT>
s := VariantFormat( Today(), "%c", 'locale' = "de" );
s≔Fr. März 01 15:45:50 2024
VariantParse( s, "%c", 'locale' = "de" );
See Also
Calendar
Calendar:-Format
Calendar:-Parse
Calendar:-VariantFormat
Calendar:-VariantParse
Date
StringTools:-FormatTime
StringTools:-ParseTime
Time
Download Help Document