summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nautilus-file.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
index ee1ff57c9..15859b6fe 100644
--- a/src/nautilus-file.c
+++ b/src/nautilus-file.c
@@ -5346,18 +5346,25 @@ nautilus_file_get_date_as_string (NautilusFile *file,
file_date_time = g_date_time_new_from_unix_local (file_time_raw);
if (date_format != NAUTILUS_DATE_FORMAT_FULL)
{
+ GTimeZone *local_tz;
GDateTime *file_date;
- now = g_date_time_new_now_local ();
- today_midnight = g_date_time_new_local (g_date_time_get_year (now),
- g_date_time_get_month (now),
- g_date_time_get_day_of_month (now),
- 0, 0, 0);
-
- file_date = g_date_time_new_local (g_date_time_get_year (file_date_time),
- g_date_time_get_month (file_date_time),
- g_date_time_get_day_of_month (file_date_time),
- 0, 0, 0);
+ /* Re-use local time zone, because every time a new local time zone is
+ * created, glib needs to check if the time zone file has changed */
+ local_tz = g_date_time_get_timezone (file_date_time);
+
+ now = g_date_time_new_now (local_tz);
+ today_midnight = g_date_time_new (local_tz,
+ g_date_time_get_year (now),
+ g_date_time_get_month (now),
+ g_date_time_get_day_of_month (now),
+ 0, 0, 0);
+
+ file_date = g_date_time_new (local_tz,
+ g_date_time_get_year (file_date_time),
+ g_date_time_get_month (file_date_time),
+ g_date_time_get_day_of_month (file_date_time),
+ 0, 0, 0);
days_ago = g_date_time_difference (today_midnight, file_date) / G_TIME_SPAN_DAY;