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() );
2023-03-08T11:43:36 UTC
Format( Today(), 'locale' = "fr" );
Format( Today(), "yyyy.MM.dd G 'at' HH:mm:ss zzz" );
2023.03.08 AD at 11:43:37 UTC
Format( Today(), "yyyy.MM.dd G 'um' HH:mm:ss zzz", 'locale' = "de" );
2023.03.08 n. Chr. um 11:43:37 UTC
Format( Now( SystemUTCClock ), "K:mm a, z", 'locale' = "ja" );
11:43 午前, UTC
Format( Now( SystemUTCClock ), "hh 'o''clock' a, zzzz" );
11 o'clock AM, 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" );
Wed Mar 08 11:43:37 2023
VariantFormat( Today(), "%c", 'locale' = "id" );
Rab Mar 08 11:43:37 2023
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" >> ) ):
Wednesday, March 08, 2023 AD, 11:43:37 AM
بودوار, مارٕچ ۰۸, ۲۰۲۳ اے ڈی, ۱۱:۴۳:۳۷ AM
mercredi, mars 08, 2023 ap. J.-C., 11:43:37 AM
水曜日, 3月 08, 2023 西暦, 11:43:37 午前
Mittwoch, März 08, 2023 n. Chr., 11:43:37 AM
수요일, 3월 08, 2023 AD, 11:43:37 오전
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≔Rabu, Maret 08, 2023 M, 11:43:37 AM
Parse( s, "EEEE, MMMM dd, yyyy GG, hh:mm:ss a", 'locale' = "id" );
Date⁡2023,3,8,11,43,37,timezone=UTC,coefficient=1
s := VariantFormat( Today(), "%c", 'locale' = "de" );
s≔Mi. März 08 11:43:37 2023
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