Add operator+ to TimeStampUTC
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user