DER ecncoding: implement DerGtime::toIsoString.
diff --git a/ndn-cpp/c/util/time.c b/ndn-cpp/c/util/time.c
index 9da0e1c..41047f8 100644
--- a/ndn-cpp/c/util/time.c
+++ b/ndn-cpp/c/util/time.c
@@ -5,6 +5,9 @@
*/
#include <sys/time.h>
+#include <math.h>
+#include <string.h>
+#include <stdio.h>
#include "time.h"
ndn_MillisecondsSince1970
@@ -14,3 +17,20 @@
gettimeofday(&t, 0);
return t.tv_sec * 1000.0 + t.tv_usec / 1000.0;
}
+
+void
+ndn_toIsoString(ndn_MillisecondsSince1970 time, char *isoString)
+{
+ double secondsSince1970 = time / 1000.0;
+ char fractionBuffer[10];
+ sprintf(fractionBuffer, "%.06lf", fmod(secondsSince1970, 1.0));
+ const char *fraction = strchr(fractionBuffer, '.');
+ if (!fraction)
+ // Don't expect this to happen.
+ fraction = ".000000";
+
+ time_t seconds = secondsSince1970;
+ 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);
+}