ISO_8601_DOTUSEC = (1 << 3),
ISO_8601_COMMAUSEC = (1 << 4),
ISO_8601_TIMEZONE = (1 << 5),
- ISO_8601_SPACE = (1 << 6)
+ ISO_8601_SPACE = (1 << 6),
+ ISO_8601_GMTIME = (1 << 7)
};
#define ISO_8601_BUFSIZ 32
/* timeval to ISO 8601 */
int strtimeval_iso(struct timeval *tv, int flags, char *buf, size_t bufsz)
{
- struct tm tm = *localtime(&tv->tv_sec);
+ struct tm tm;
+
+ if (flags & ISO_8601_GMTIME)
+ tm = *gmtime(&tv->tv_sec);
+ else
+ tm = *localtime(&tv->tv_sec);
return format_iso_time(&tm, tv->tv_usec, flags, buf, bufsz);
}
/* time_t to ISO 8601 */
int strtime_iso(const time_t *t, int flags, char *buf, size_t bufsz)
{
- struct tm tm = *localtime(t);
+ struct tm tm;
+
+ if (flags & ISO_8601_GMTIME)
+ tm = *gmtime(t);
+ else
+ tm = *localtime(t);
return format_iso_time(&tm, 0, flags, buf, bufsz);
}