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() );
2021-03-09T02:31:43 UTC
Format( Today(), 'locale' = "fr" );
Format( Today(), "yyyy.MM.dd G 'at' HH:mm:ss zzz" );
2021.03.09 AD at 02:31:43 UTC
Format( Today(), "yyyy.MM.dd G 'um' HH:mm:ss zzz", 'locale' = "de" );
2021.03.09 n. Chr. um 02:31:43 UTC
Format( Now( SystemUTCClock ), "K:mm a, z", 'locale' = "ja" );
2:31 午前, UTC
Format( Now( SystemUTCClock ), "hh 'o''clock' a, zzzz" );
02 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" );
Tue Mar 09 02:31:43 2021
VariantFormat( Today(), "%c", 'locale' = "id" );
Sel Mar 09 02:31:43 2021
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" >> ) ):
Tuesday, March 09, 2021 AD, 02:31:44 AM
بۆموار, مارٕچ ۰۹, ۲۰۲۱ اے ڈی, ۰۲:۳۱:۴۴ AM
mardi, mars 09, 2021 ap. J.-C., 02:31:44 AM
火曜日, 3月 09, 2021 西暦, 02:31:44 午前
Dienstag, März 09, 2021 n. Chr., 02:31:44 AM
화요일, 3월 09, 2021 AD, 02:31:44 오전
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≔Selasa, Maret 09, 2021 M, 02:31:44 AM
Parse( s, "EEEE, MMMM dd, yyyy GG, hh:mm:ss a", 'locale' = "id" );
Date⁡2021,3,9,2,31,44,timezone=UTC,coefficient=1
s := VariantFormat( Today(), "%c", 'locale' = "de" );
s≔Di. März 09 02:31:44 2021
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
What kind of issue would you like to report? (Optional)