- Fixed bug where ISO dates were parsed and the TZ was modified, which should
  have no bearing on a Zulu time.
This commit is contained in:
Paul Beckingham 2012-04-09 00:16:09 -04:00
parent dd73cc1ccf
commit 2c07837852
3 changed files with 15 additions and 21 deletions

View file

@ -18,6 +18,8 @@ Bugs
Uli Martens).
+ Fixed bug where '6 months' was interpreted as 180 days, but when rendered
was shown as '5 months' (thanks to Aikido Guy).
+ Fixed bug where ISO dates were parsed and the TZ was modified, which should
have no bearing on a Zulu time.
------ old releases ------------------------------

View file

@ -131,13 +131,13 @@ Date::Date (const std::string& input, const std::string& format /* = "m/d/Y" */)
if (isRelativeDate (input))
return;
// Parse an ISO date.
// Parse a formatted date.
Nibbler n (input);
if (n.getDateISO (_t) && n.depleted ())
if (n.getDate (format, _t) && n.depleted ())
return;
// Parse a formatted date.
if (n.getDate (format, _t) && n.depleted ())
// Parse an ISO date.
if (n.getDateISO (_t) && n.depleted ())
return;
// Perhaps it is an epoch date, in string form?

View file

@ -701,17 +701,9 @@ bool Nibbler::getDateISO (time_t& t)
tms.tm_hour = hour;
tms.tm_min = minute;
tms.tm_sec = second;
tms.tm_gmtoff = 0;
char *tz = getenv ("TZ");
setenv ("TZ", "UTC", 1);
tzset ();
t = mktime (&tms);
if (tz)
setenv ("TZ", tz, 1);
else
unsetenv ("TZ");
tzset();
t = timegm (&tms);
return true;
}
}