2 Copyright (C) 2010-2014 jeanfi@gmail.com
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
9 This program is distributed in the hope that it will be useful, but
10 WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
24 const int P_TIME_VER = 2;
26 static const int ISO8601_TIME_LENGTH = 19; /* YYYY-MM-DDThh:mm:ss */
27 static const int ISO8601_DATE_LENGTH = 10; /* YYYY-MM-DD */
29 char *time_to_ISO8601_time(time_t *t)
33 memset(<, 0, sizeof(struct tm));
34 if (!gmtime_r(t, <))
37 return tm_to_ISO8601_time(<);
40 char *time_to_ISO8601_date(time_t *t)
44 memset(<, 0, sizeof(struct tm));
45 if (!gmtime_r(t, <))
48 return tm_to_ISO8601_date(<);
51 char *tm_to_ISO8601_date(struct tm *tm)
55 str = malloc(ISO8601_DATE_LENGTH + 1);
57 if (strftime(str, ISO8601_DATE_LENGTH + 1, "%F", tm))
64 char *tm_to_ISO8601_time(struct tm *tm)
68 str = malloc(ISO8601_TIME_LENGTH + 1);
70 if (strftime(str, ISO8601_TIME_LENGTH + 1, "%FT%T", tm))
77 char *get_current_ISO8601_time()
82 return time_to_ISO8601_time(&t);