diff --git a/src/libqof/qof/gnc-datetime.cpp b/src/libqof/qof/gnc-datetime.cpp index 0cf4412fc7..7c5774b0d1 100644 --- a/src/libqof/qof/gnc-datetime.cpp +++ b/src/libqof/qof/gnc-datetime.cpp @@ -86,11 +86,20 @@ public: GncDateTimeImpl(const time64 time) : m_time(LDT_from_unix_local(time)) {} GncDateTimeImpl(PTime&& pt) : m_time(pt, tzp.get(pt.date().year())) {} GncDateTimeImpl(LDT&& ldt) : m_time(ldt) {} + + operator time64() const; void now() { m_time = boost::local_time::local_sec_clock::local_time(tzp.get(boost::gregorian::day_clock::local_day().year())); } private: LDT m_time; }; + +GncDateTimeImpl::operator time64() const +{ + auto duration = m_time.utc_time() - unix_epoch; + auto secs = duration.ticks(); + secs /= ticks_per_second; + return secs; } /* =================== Presentation-class Implementations ====================*/ @@ -114,4 +123,8 @@ GncDateTime::now() { m_impl->now(); } + +GncDateTime::operator time64() const +{ + return m_impl->operator time64(); } diff --git a/src/libqof/qof/gnc-datetime.hpp b/src/libqof/qof/gnc-datetime.hpp index c70f045c74..015b88466d 100644 --- a/src/libqof/qof/gnc-datetime.hpp +++ b/src/libqof/qof/gnc-datetime.hpp @@ -90,6 +90,7 @@ public: GncDateTime(time64 time); ~GncDateTime(); void now(); + explicit operator time64() const; bool isnull (void) { return m_impl == nullptr; } private: diff --git a/src/libqof/qof/test/gtest-gnc-datetime.cpp b/src/libqof/qof/test/gtest-gnc-datetime.cpp index 4a3d288c67..4f41147fa6 100644 --- a/src/libqof/qof/test/gtest-gnc-datetime.cpp +++ b/src/libqof/qof/test/gtest-gnc-datetime.cpp @@ -40,12 +40,13 @@ TEST(gnc_date_constructors, test_ymd_constructor) TEST(gnc_datetime_constructors, test_default_constructor) { GncDateTime atime; - EXPECT_FALSE(atime.isnull()); + EXPECT_EQ(static_cast(atime), static_cast(INT64_C(0))); } TEST(gnc_datetime_constructors, test_time64_constructor) { const time64 time = 2394187200; //2045-11-13 12:00:00 Z GncDateTime atime(time); - EXPECT_FALSE(atime.isnull()); + EXPECT_EQ(static_cast(atime), time); } +