glib: Format GDateTime ISO8601 years as %C%y

The current use of %Y does not take into account that %Y will
not pad the year with 0's, meanwhile ISO8601 does expect a full
YYYY format for all dates. This breaks the formatting with dates
prior to the year 1000.

Split this into %C%y so 2-digit, 0-padded century and year are
printed separately, this gives the expected YYYY format.
This commit is contained in:
Carlos Garnacho 2022-03-20 13:22:38 +01:00
parent 96efd662c9
commit c3cc6bf5eb

View File

@ -3492,12 +3492,12 @@ g_date_time_format_iso8601 (GDateTime *datetime)
GString *outstr = NULL;
gchar *main_date = NULL;
gint64 offset;
gchar *format = "%Y-%m-%dT%H:%M:%S";
gchar *format = "%C%y-%m-%dT%H:%M:%S";
/* if datetime has sub-second non-zero values below the second precision we
* should print them as well */
if (datetime->usec % G_TIME_SPAN_SECOND != 0)
format = "%Y-%m-%dT%H:%M:%S.%f";
format = "%C%y-%m-%dT%H:%M:%S.%f";
/* Main date and time. */
main_date = g_date_time_format (datetime, format);