From c3cc6bf5eb2e505e3f15c16f9a0fee9de7238574 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 20 Mar 2022 13:22:38 +0100 Subject: [PATCH] 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. --- glib/gdatetime.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glib/gdatetime.c b/glib/gdatetime.c index 142338128..0ec390c94 100644 --- a/glib/gdatetime.c +++ b/glib/gdatetime.c @@ -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);