Add operator+ to TimeStampUTC

This commit is contained in:
Joakim Hove
2019-12-02 15:15:55 +01:00
parent 30d6f51faf
commit 200f3a55bd
3 changed files with 22 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
#ifndef OPM_TIMESERVICE_HEADER_INCLUDED
#define OPM_TIMESERVICE_HEADER_INCLUDED
#include <chrono>
#include <ctime>
namespace Opm {
@@ -61,6 +62,7 @@ namespace Opm {
int usec_{0};
};
TimeStampUTC operator+(const TimeStampUTC& lhs, std::chrono::duration<double> delta);
std::time_t asTimeT(const TimeStampUTC& tp);
} // namespace Opm

View File

@@ -75,6 +75,7 @@ Opm::TimeStampUTC& Opm::TimeStampUTC::operator=(const std::time_t tp)
return *this;
}
Opm::TimeStampUTC::TimeStampUTC(const YMD& ymd)
: ymd_{ std::move(ymd) }
{}
@@ -117,3 +118,9 @@ std::time_t Opm::asTimeT(const TimeStampUTC& tp)
return makeUTCTime(timePoint);
}
Opm::TimeStampUTC Opm::operator+(const Opm::TimeStampUTC& lhs, std::chrono::duration<double> delta) {
return Opm::TimeStampUTC( advance(Opm::asTimeT(lhs) , delta.count()) );
}

View File

@@ -619,3 +619,16 @@ Opm::DeckRecord createDeckRecord(int day, const std::string &month, int year, co
return deckRecord;
}
BOOST_AUTO_TEST_CASE(TimeServiceOperatorPlus) {
Opm::TimeStampUTC t0(Opm::TimeMap::mkdatetime(2010,1,1,0,0,0));
auto t1 = t0 + std::chrono::duration<double>(3600*24 + 0.50);
BOOST_CHECK_EQUAL(t1.year(), 2010);
BOOST_CHECK_EQUAL(t1.month(), 1);
BOOST_CHECK_EQUAL(t1.day(), 2);
BOOST_CHECK_EQUAL(t1.microseconds(), 500000);
}