mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-11 04:58:56 +02:00
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:
@ -3492,12 +3492,12 @@ g_date_time_format_iso8601 (GDateTime *datetime)
|
|||||||
GString *outstr = NULL;
|
GString *outstr = NULL;
|
||||||
gchar *main_date = NULL;
|
gchar *main_date = NULL;
|
||||||
gint64 offset;
|
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
|
/* if datetime has sub-second non-zero values below the second precision we
|
||||||
* should print them as well */
|
* should print them as well */
|
||||||
if (datetime->usec % G_TIME_SPAN_SECOND != 0)
|
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 and time. */
|
||||||
main_date = g_date_time_format (datetime, format);
|
main_date = g_date_time_format (datetime, format);
|
||||||
|
Reference in New Issue
Block a user