diff --git a/ndn-cpp/c/errors.c b/ndn-cpp/c/errors.c
index 55ae58d..a77a858 100644
--- a/ndn-cpp/c/errors.c
+++ b/ndn-cpp/c/errors.c
@@ -75,6 +75,8 @@
     return      "SocketTransport error in close";
   case NDN_ERROR_Name_component_does_not_begin_with_the_expected_marker:
     return      "Name component does not begin with the expected marker";
+  case NDN_ERROR_Time_functions_are_not_supported_by_the_standard_library:
+    return      "Time functions are not supported by the standard library";
   default:
     return "unrecognized ndn_Error code";  
   }
diff --git a/ndn-cpp/c/errors.h b/ndn-cpp/c/errors.h
index f975c26..396f43d 100644
--- a/ndn-cpp/c/errors.h
+++ b/ndn-cpp/c/errors.h
@@ -45,7 +45,8 @@
   NDN_ERROR_SocketTransport_error_in_poll,
   NDN_ERROR_SocketTransport_error_in_recv,
   NDN_ERROR_SocketTransport_error_in_close,
-  NDN_ERROR_Name_component_does_not_begin_with_the_expected_marker
+  NDN_ERROR_Name_component_does_not_begin_with_the_expected_marker,
+  NDN_ERROR_Time_functions_are_not_supported_by_the_standard_library
 } ndn_Error;
   
 /**
diff --git a/ndn-cpp/c/util/time.c b/ndn-cpp/c/util/time.c
index 7ffa517..b7de490 100644
--- a/ndn-cpp/c/util/time.c
+++ b/ndn-cpp/c/util/time.c
@@ -14,14 +14,16 @@
 ndn_getNowMilliseconds()
 {
   struct timeval t;
+  // Note: configure.ac requires gettimeofday.
   gettimeofday(&t, 0);
   return t.tv_sec * 1000.0 + t.tv_usec / 1000.0;
 }
 
-void
-ndn_toIsoString(ndn_MillisecondsSince1970 time, char *isoString)
+ndn_Error
+ndn_toIsoString(ndn_MillisecondsSince1970 milliseconds, char *isoString)
 {
-  double secondsSince1970 = time / 1000.0;
+#if NDN_CPP_HAVE_GMTIME_SUPPORT
+  double secondsSince1970 = milliseconds / 1000.0;
   char fractionBuffer[10];
   sprintf(fractionBuffer, "%.06lf", fmod(secondsSince1970, 1.0));
   const char *fraction = strchr(fractionBuffer, '.');
@@ -33,24 +35,35 @@
   struct tm* gmt = gmtime(&seconds);
   sprintf(isoString, "%04d%02d%02dT%02d%02d%02d%s", 1900 + gmt->tm_year, gmt->tm_mon + 1, gmt->tm_mday,
     gmt->tm_hour, gmt->tm_min, gmt->tm_sec, fraction);
+  
+  return NDN_ERROR_success;
+#else
+  return NDN_ERROR_Time_functions_are_not_supported_by_the_standard_library;
+#endif
 }
 
-ndn_MillisecondsSince1970
-ndn_fromIsoString(const char* isoString)
+ndn_Error
+ndn_fromIsoString(const char* isoString, ndn_MillisecondsSince1970 *milliseconds)
 {
+#if NDN_CPP_HAVE_GMTIME_SUPPORT
   // Initialize time zone, etc.
   time_t dummyTime = 0;
-  struct tm time = *gmtime(&dummyTime);
+  struct tm tm1 = *gmtime(&dummyTime);
   
-  sscanf(isoString, "%4d%2d%2dT%2d%2d", &time.tm_year, &time.tm_mon, &time.tm_mday, &time.tm_hour, &time.tm_min);
+  sscanf(isoString, "%4d%2d%2dT%2d%2d", &tm1.tm_year, &tm1.tm_mon, &tm1.tm_mday, &tm1.tm_hour, &tm1.tm_min);
   // Skip the time past minutes and get the float seconds.
   double seconds;
   sscanf(isoString + (4 + 2 + 2 + 1 + 2 + 2), "%lf", &seconds);
   
   // tm_year starts from 1900.
-  time.tm_year -= 1900;
+  tm1.tm_year -= 1900;
   // tm_mon starts from 0, not 1.
-  time.tm_mon -= 1;
-  time.tm_sec = 0;
-  return (timegm(&time) + seconds) * 1000.0;  
-}
\ No newline at end of file
+  tm1.tm_mon -= 1;
+  tm1.tm_sec = 0;
+  
+  *milliseconds = (timegm(&tm1) + seconds) * 1000.0;
+  return NDN_ERROR_success;
+#else
+  return NDN_ERROR_Time_functions_are_not_supported_by_the_standard_library;
+#endif
+}
diff --git a/ndn-cpp/c/util/time.h b/ndn-cpp/c/util/time.h
index b2414c7..75f95df 100644
--- a/ndn-cpp/c/util/time.h
+++ b/ndn-cpp/c/util/time.h
@@ -8,6 +8,7 @@
 #define NDN_TIME_H
 
 #include <ndn-cpp/c/common.h>
+#include "../errors.h"
 
 #ifdef  __cplusplus
 extern "C" {
@@ -24,17 +25,19 @@
  * Convert the time from milliseconds to an ISO time string, for example "20131018T184138.423355".
  * @param milliseconds The time in milliseconds since 1/1/1970, including fractions of a millisecond.
  * @param isoString A buffer of at least 23 bytes to receive the null-terminated ISO time string.
+ * @return 0 for success, else an error code including if we don't have necessary standard library support.
  */
-void
-ndn_toIsoString(ndn_MillisecondsSince1970 time, char *isoString);
+ndn_Error
+ndn_toIsoString(ndn_MillisecondsSince1970 milliseconds, char *isoString);
 
 /**
  * Parse the ISO time string and return the time in milliseconds.
  * @param isoString The ISO time string, for example "20131018T184138.423355".
- * @return The time in milliseconds since 1/1/1970, including fractions of a millisecond.
+ * @param milliseconds Return the time in milliseconds since 1/1/1970, including fractions of a millisecond.
+ * @return 0 for success, else an error code including if we don't have necessary standard library support.
  */
-ndn_MillisecondsSince1970
-ndn_fromIsoString(const char* isoString);
+ndn_Error
+ndn_fromIsoString(const char* isoString, ndn_MillisecondsSince1970 *milliseconds);
 
 #ifdef  __cplusplus
 }
