#define LOG(str, now, res) (void) 0
#endif
-static const char* const day_table[] =
+static const char *const day_table[] =
{
"SUNDAY",
"MONDAY",
}
#endif /* ! HAVE_TM_GMTOFF */
-long
-gmt_offset()
+static long
+gmt_offset (time_t s)
{
- time_t now;
long gmtoff;
- time(&now);
-
#if !HAVE_TM_GMTOFF
- struct tm tm_local = *localtime(&now);
- struct tm tm_gmt = *gmtime(&now);
+ struct tm tm_local = *localtime (&s);
+ struct tm tm_gmt = *gmtime (&s);
- gmtoff = tm_diff(&tm_local, &tm_gmt);
+ gmtoff = tm_diff (&tm_local, &tm_gmt);
#else
- gmtoff = localtime(&now)->tm_gmtoff;
+ gmtoff = localtime (&s)->tm_gmtoff;
#endif
return gmtoff;
const char *p;
int i;
long gmtoff;
+ time_t ref_time = 1304250918;
set_program_name (argv[0]);
- gmtoff = gmt_offset();
+ gmtoff = gmt_offset (ref_time);
/* ISO 8601 extended date and time of day representation,
'T' separator, local time zone */
p = "2011-05-01T11:55:18";
- expected.tv_sec = 1304250918 - gmtoff;
+ expected.tv_sec = ref_time - gmtoff;
expected.tv_nsec = 0;
ASSERT (parse_datetime (&result, p, 0));
LOG (p, expected, result);
/* ISO 8601 extended date and time of day representation,
' ' separator, local time zone */
p = "2011-05-01 11:55:18";
- expected.tv_sec = 1304250918 - gmtoff;
+ expected.tv_sec = ref_time - gmtoff;
expected.tv_nsec = 0;
ASSERT (parse_datetime (&result, p, 0));
LOG (p, expected, result);
/* ISO 8601, extended date and time of day representation,
'T' separator, UTC */
p = "2011-05-01T11:55:18Z";
- expected.tv_sec = 1304250918;
+ expected.tv_sec = ref_time;
expected.tv_nsec = 0;
ASSERT (parse_datetime (&result, p, 0));
LOG (p, expected, result);
/* ISO 8601, extended date and time of day representation,
' ' separator, UTC */
p = "2011-05-01 11:55:18Z";
- expected.tv_sec = 1304250918;
+ expected.tv_sec = ref_time;
expected.tv_nsec = 0;
ASSERT (parse_datetime (&result, p, 0));
LOG (p, expected, result);
ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 tomorrow ago";
ASSERT (!parse_datetime (&result, p, &now));
+ p = "UTC+4:00 tomorrow hence";
+ ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 40 now ago";
ASSERT (!parse_datetime (&result, p, &now));
p = "UTC+4:00 last tomorrow";
LOG (p, now, result2);
ASSERT (result.tv_sec == result2.tv_sec
&& result.tv_nsec == result2.tv_nsec);
+ p = "UTC+400 1 day hence";
+ ASSERT (parse_datetime (&result2, p, &now));
+ LOG (p, now, result2);
+ ASSERT (result.tv_sec == result2.tv_sec
+ && result.tv_nsec == result2.tv_nsec);
now.tv_sec = 4711;
now.tv_nsec = 1267;
p = "UTC+400 yesterday";