summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-03-16 20:36:46 +0000
committerCarlos Garnacho <carlosg@gnome.org>2022-03-16 20:36:46 +0000
commite0138ba26fd96a0f43573ed662cb6385349ad4c1 (patch)
tree594ac2f3ecce17354088b7585850ddbe4936fa2f
parent32bd56cc4a5d7d700a300b3231abe551e18252e5 (diff)
parent7b5ace74d80f3f6009782c7f0616f119d72df7c2 (diff)
downloadtracker-e0138ba26fd96a0f43573ed662cb6385349ad4c1.tar.gz
Merge branch 'wip/carlosg/lost-subseconds' into 'master'
libtracker-common: Do not miss subsecond info printing iso8601 dates See merge request GNOME/tracker!496
-rw-r--r--src/libtracker-common/tracker-date-time.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libtracker-common/tracker-date-time.c b/src/libtracker-common/tracker-date-time.c
index bfc05c782..494b9f5cc 100644
--- a/src/libtracker-common/tracker-date-time.c
+++ b/src/libtracker-common/tracker-date-time.c
@@ -54,8 +54,17 @@ tracker_date_new_from_iso8601 (const gchar *string,
gchar *
tracker_date_format_iso8601 (GDateTime *datetime)
{
- if (g_date_time_get_utc_offset (datetime) == 0)
- return g_date_time_format (datetime, "%C%y-%m-%dT%TZ");
- else
+ gboolean has_offset, has_subsecond;
+
+ has_offset = g_date_time_get_utc_offset (datetime) != 0;
+ has_subsecond = g_date_time_get_microsecond (datetime) != 0;
+
+ if (has_offset && has_subsecond)
+ return g_date_time_format (datetime, "%C%y-%m-%dT%H:%M:%S.%f%:z");
+ else if (has_offset)
return g_date_time_format (datetime, "%C%y-%m-%dT%T%:z");
+ else if (has_subsecond)
+ return g_date_time_format (datetime, "%C%y-%m-%dT%H:%M:%S.%fZ");
+ else
+ return g_date_time_format (datetime, "%C%y-%m-%dT%TZ");
}