Commit b0682582 authored by Max Kellermann's avatar Max Kellermann

time/ISO8601: allow omitting the "Z" suffix

And allow "Z" suffix after date.
parent ba4cd47f
ver 0.21.17 (not yet released)
* protocol
- relax the ISO 8601 parser: allow omitting the time of day
- relax the ISO 8601 parser: allow omitting the time of day and the "Z"
suffix
* archive
- zzip: improve error reporting
* outputs
......
......@@ -83,7 +83,7 @@ ParseISO8601(const char *s)
/* parse the time of day */
if (*s == 'T') {
++s;
end = strptime(s, "%TZ", &tm);
end = strptime(s, "%T", &tm);
if (end == nullptr)
throw std::runtime_error("Failed to parse time of day");
......@@ -93,6 +93,9 @@ ParseISO8601(const char *s)
auto tp = TimeGm(tm);
if (*s == 'Z')
++s;
if (*s != 0)
throw std::runtime_error("Garbage at end of time stamp");
......
......@@ -51,6 +51,12 @@ static constexpr struct {
{ "2019-02-04", 1549238400, std::chrono::hours(24) },
{ "2018-12-31", 1546214400, std::chrono::hours(24) },
{ "2019-01-01", 1546300800, std::chrono::hours(24) },
/* date with time zone */
{ "2019-02-04Z", 1549238400, std::chrono::hours(24) },
/* without time zone */
{ "2019-02-04T16:46:41", 1549298801, std::chrono::seconds(1) },
};
TEST(ISO8601, Parse)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment