[tracker] libtracker-common: Always generate UTC time strings



commit 88403a3a0bb5b655de417faba3bbf7fb0af3d5c7
Author: Jürg Billeter <j bitron ch>
Date:   Mon Jul 13 12:36:21 2009 +0200

    libtracker-common: Always generate UTC time strings

 src/libtracker-common/tracker-type-utils.c        |   10 +++++-----
 src/libtracker-data/tracker-sparql-query.vala     |    8 ++++----
 tests/libtracker-common/tracker-type-utils-test.c |    6 +++---
 3 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/src/libtracker-common/tracker-type-utils.c b/src/libtracker-common/tracker-type-utils.c
index d98fea9..433727a 100644
--- a/src/libtracker-common/tracker-type-utils.c
+++ b/src/libtracker-common/tracker-type-utils.c
@@ -478,16 +478,16 @@ gchar *
 tracker_date_to_string (time_t date_time)
 {
 	gchar	  buffer[30];
-	struct tm local_time;
+	struct tm utc_time;
 	size_t	  count;
 
 	memset (buffer, '\0', sizeof (buffer));
-	memset (&local_time, 0, sizeof (struct tm));
+	memset (&utc_time, 0, sizeof (struct tm));
 
-	localtime_r (&date_time, &local_time);
+	gmtime_r (&date_time, &utc_time);
 
-	/* Output is ISO 8160 format : "YYYY-MM-DDThh:mm:ss+zz:zz" */
-	count = strftime (buffer, sizeof (buffer), "%FT%T%z", &local_time);
+	/* Output is ISO 8160 format : "YYYY-MM-DDThh:mm:ssZ" */
+	count = strftime (buffer, sizeof (buffer), "%FT%TZ", &utc_time);
 
 	return count > 0 ? g_strdup (buffer) : NULL;
 }
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index d29e1f9..52ef798 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -104,7 +104,7 @@ public class Tracker.SparqlQuery : Object {
 								} else if (prop.data_type == PropertyType.BOOLEAN) {
 									sql.append_printf ("CASE \"%s\" WHEN 1 THEN 'true' WHEN 0 THEN 'false' ELSE NULL END", prop.name);
 								} else if (prop.data_type == PropertyType.DATETIME) {
-									sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%S\", \"%s\", \"unixepoch\")", prop.name);
+									sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%SZ\", \"%s\", \"unixepoch\")", prop.name);
 								} else {
 									sql.append_printf ("\"%s\"", prop.name);
 								}
@@ -156,7 +156,7 @@ public class Tracker.SparqlQuery : Object {
 								} else if (prop.data_type == PropertyType.BOOLEAN) {
 									sql.append_printf ("CASE \"%s\" WHEN 1 THEN 'true' WHEN 0 THEN 'false' ELSE NULL END", prop.name);
 								} else if (prop.data_type == PropertyType.DATETIME) {
-									sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%S\", \"%s\", \"unixepoch\")", prop.name);
+									sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%SZ\", \"%s\", \"unixepoch\")", prop.name);
 								} else {
 									sql.append_printf ("\"%s\"", prop.name);
 								}
@@ -193,7 +193,7 @@ public class Tracker.SparqlQuery : Object {
 						} else if (prop.data_type == PropertyType.BOOLEAN) {
 							sql.append_printf ("CASE \"%s\" WHEN 1 THEN 'true' WHEN 0 THEN 'false' ELSE NULL END", prop.name);
 						} else if (prop.data_type == PropertyType.DATETIME) {
-							sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%S\", \"%s\", \"unixepoch\")", prop.name);
+							sql.append_printf ("strftime (\"%%Y-%%m-%%dT%%H:%%M:%%SZ\", \"%s\", \"unixepoch\")", prop.name);
 						} else {
 							sql.append_printf ("\"%s\"", prop.name);
 						}
@@ -377,7 +377,7 @@ public class Tracker.SparqlQuery : Object {
 		} else if (binding.is_boolean) {
 			return "(CASE \"%s_u\" WHEN 1 THEN 'true' WHEN 0 THEN 'false' ELSE NULL END)".printf (variable_name);
 		} else if (binding.is_datetime) {
-			return "strftime (\"%%Y-%%m-%%dT%%H:%%M:%%S\", \"%s_u\", \"unixepoch\")".printf (variable_name);
+			return "strftime (\"%%Y-%%m-%%dT%%H:%%M:%%SZ\", \"%s_u\", \"unixepoch\")".printf (variable_name);
 		} else {
 			return "\"%s_u\"".printf (variable_name);
 		}
diff --git a/tests/libtracker-common/tracker-type-utils-test.c b/tests/libtracker-common/tracker-type-utils-test.c
index 24a20ae..eb56fe7 100644
--- a/tests/libtracker-common/tracker-type-utils-test.c
+++ b/tests/libtracker-common/tracker-type-utils-test.c
@@ -118,13 +118,13 @@ test_date_to_string (void)
 	original->tm_mday = 16;
 	original->tm_mon = 5;
 	original->tm_year = 108;
-	original->tm_isdst = 1;
+	original->tm_isdst = 0;
 
-	input = mktime (original);
+	input = mktime (original) - timezone;
 
 	result = tracker_date_to_string (input);
 
-	g_assert (result != NULL && strncmp (result, "2008-06-16T23:53:10", 19) == 0);
+	g_assert (result != NULL && strncmp (result, "2008-06-16T23:53:10Z", 19) == 0);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]