commit bfbf37993293c9bd2a44a1df723a92b2586ca7c3
Author: Parin Porecha <parinporecha@gmail.com>
Date:   Sun Feb 9 03:14:38 2014 +0530

    Fix for Bug 409200 - time_from_isodate() does not read ISO8601 dates

diff --git a/calendar/libecal/e-cal-time-util.c b/calendar/libecal/e-cal-time-util.c
index 5f9ff56..4bb6ccc 100644
--- a/calendar/libecal/e-cal-time-util.c
+++ b/calendar/libecal/e-cal-time-util.c
@@ -608,15 +608,29 @@ isodate_from_time_t (time_t t)
  * Note that we only allow UTC times at present.
  **/
 time_t
-time_from_isodate (const gchar *str)
+time_from_isodate (const gchar *iso_str)
 {
 	struct icaltimetype tt = icaltime_null_time ();
+	gchar str[20];
 	icaltimezone *utc_zone;
-	gint len, i;
+	gint len, i = 0, j = 0;
 
-	g_return_val_if_fail (str != NULL, -1);
+	g_return_val_if_fail (iso_str != NULL, -1);
 
-	/* yyyymmdd[Thhmmss[Z]] */
+	/* iso_str = yyyymmdd[Thh:mm:ss[Z]] */
+
+	if (strchr(iso_str, ':')) {
+		while (iso_str[i]) {
+			if (iso_str[i] != ':')
+				str[j++] = iso_str[i];
+			i++;
+		}
+		str[j] = 0;
+	}
+	else
+		strcpy (str, iso_str);
+
+	/* str = yyyymmdd[Thhmmss[Z]] */
 
 	len = strlen (str);
 
diff --git a/calendar/libecal/e-cal-time-util.h b/calendar/libecal/e-cal-time-util.h
index 7af39dd..764c95d 100644
--- a/calendar/libecal/e-cal-time-util.h
+++ b/calendar/libecal/e-cal-time-util.h
@@ -49,7 +49,7 @@ gint	time_leap_years_up_to	(gint year);
 /* Convert to or from an ISO 8601 representation of a time, in UTC,
  * e.g. "20010708T183000Z". */
 gchar   *isodate_from_time_t     (time_t t);
-time_t	time_from_isodate	(const gchar *str);
+time_t	time_from_isodate	(const gchar *iso_str);
 
 /**************************************************************************
  * time_t manipulation functions.
