diff --git a/src/common/time/TimeUtils.h b/src/common/time/TimeUtils.h index 8e52816a1..70935d751 100644 --- a/src/common/time/TimeUtils.h +++ b/src/common/time/TimeUtils.h @@ -9,6 +9,7 @@ #include #include +#include #include #include "common/base/Status.h" @@ -50,7 +51,11 @@ class TimeUtils { std::istringstream ss(str); ss >> std::get_time(&tm, "%Y-%m-%dT%H:%M:%S"); if (ss.fail()) { - return Status::Error(); + std::istringstream ss2(str); + ss2 >> std::get_time(&tm, "%Y-%m-%d %H:%M:%S"); + if (ss2.fail()) { + return Status::Error(); + } } DateTime dt; dt.year = tm.tm_year + 1900; diff --git a/src/common/time/test/TimeUtilsTest.cpp b/src/common/time/test/TimeUtilsTest.cpp index 83458301c..2bfc7a97b 100644 --- a/src/common/time/test/TimeUtilsTest.cpp +++ b/src/common/time/test/TimeUtilsTest.cpp @@ -163,6 +163,20 @@ TEST(Time, TimezoneShift) { } } +TEST(Time, Parse) { + // datetime + { + auto result = time::TimeUtils::parseDateTime("2019-03-04 22:00:30"); + ASSERT_TRUE(result.ok()); + EXPECT_EQ(result.value(), DateTime(2019, 3, 4, 22, 0, 30, 0)); + } + { + auto result = time::TimeUtils::parseDateTime("2019-03-04T22:00:30"); + ASSERT_TRUE(result.ok()); + EXPECT_EQ(result.value(), DateTime(2019, 3, 4, 22, 0, 30, 0)); + } +} + } // namespace nebula int main(int argc, char **argv) {