song/Filter: try ParseISO8601() first
Prepare for allowing ISO8601 time stamps without delimiters, such as 20191216, and prevent them from being interpreted as numeric UNIX time stamps.
This commit is contained in:
parent
63c5d66016
commit
b7744be208
@ -113,14 +113,19 @@ ParseTimeStamp(const char *s)
|
|||||||
{
|
{
|
||||||
assert(s != nullptr);
|
assert(s != nullptr);
|
||||||
|
|
||||||
char *endptr;
|
try {
|
||||||
unsigned long long value = strtoull(s, &endptr, 10);
|
/* try ISO 8601 */
|
||||||
if (*endptr == 0 && endptr > s)
|
return ParseISO8601(s).first;
|
||||||
/* it's an integral UNIX time stamp */
|
} catch (...) {
|
||||||
return std::chrono::system_clock::from_time_t((time_t)value);
|
char *endptr;
|
||||||
|
unsigned long long value = strtoull(s, &endptr, 10);
|
||||||
|
if (*endptr == 0 && endptr > s)
|
||||||
|
/* it's an integral UNIX time stamp */
|
||||||
|
return std::chrono::system_clock::from_time_t((time_t)value);
|
||||||
|
|
||||||
/* try ISO 8601 */
|
/* rethrow the ParseISO8601() error */
|
||||||
return ParseISO8601(s).first;
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr bool
|
static constexpr bool
|
||||||
|
Loading…
Reference in New Issue
Block a user