Fix time-string format in backend for GncDateTime(std::string).

Also provide a simple test of that ctor.
This commit is contained in:
John Ralls 2017-08-16 11:49:53 +02:00
parent 43df1ccc3a
commit e9ac71c0f9
2 changed files with 19 additions and 0 deletions

View File

@ -393,7 +393,13 @@ GncSqlColumnTableEntryImpl<CT_TIMESPEC>::load (const GncSqlBackend* sql_be,
{
try
{
constexpr size_t datelen = 14;
auto val = row.get_string_at_col(m_col_name);
if (val.length() == datelen)
val = std::string(val.substr(0, 4) + "-" + val.substr(4, 2) +
"-" + val.substr(6, 2) + " " +
val.substr(8, 2) + ":" + val.substr(10, 2) +
":" + val.substr(12, 2));
GncDateTime time(val);
ts.tv_sec = static_cast<time64>(time);
}

View File

@ -259,6 +259,19 @@ TEST(gnc_datetime_constructors, test_time64_constructor)
EXPECT_EQ(static_cast<time64>(atime), time);
}
TEST(gnc_datetime_constructors, test_string_constructor)
{
std::string timestr("2015-12-05 00:01:00");
GncDateTime time(timestr);
auto tm = time.utc_tm();
EXPECT_EQ(tm.tm_year, 115);
EXPECT_EQ(tm.tm_mon, 11);
EXPECT_EQ(tm.tm_mday, 5);
EXPECT_EQ(tm.tm_hour, 0);
EXPECT_EQ(tm.tm_min, 1);
EXPECT_EQ(tm.tm_sec, 0);
}
TEST(gnc_datetime_constructors, test_struct_tm_constructor)
{
#ifdef HAVE_STRUCT_TM_GMTOFF