Skip to content

Commit a2794ab

Browse files
authored
Merge pull request #559 from RcppCore/bugfix/datetime_int_ops
operator+ for int argument (closes #558)
2 parents 40dde2f + b773fe8 commit a2794ab

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2016-10-19 Dirk Eddelbuettel <[email protected]>
2+
3+
* inst/include/Rcpp/date_datetime/Datetime.h (Rcpp): Additional
4+
operator+ for int argument
5+
16
2016-10-18 Dirk Eddelbuettel <[email protected]>
27

38
* inst/include/Rcpp/date_datetime/Date.h (Rcpp): Add operator double()

inst/include/Rcpp/date_datetime/Datetime.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// Datetime.h: Rcpp R/C++ interface class library -- Datetime (POSIXct)
44
//
5-
// Copyright (C) 2010 - 2015 Dirk Eddelbuettel and Romain Francois
5+
// Copyright (C) 2010 - 2016 Dirk Eddelbuettel and Romain Francois
66
//
77
// This file is part of Rcpp.
88
//
@@ -55,6 +55,7 @@ namespace Rcpp {
5555

5656
// Minimal set of date operations.
5757
friend Datetime operator+( const Datetime &dt, double offset);
58+
friend Datetime operator+( const Datetime &dt, int offset);
5859
friend double operator-( const Datetime &dt1, const Datetime& dt2);
5960
friend bool operator<( const Datetime &dt1, const Datetime& dt2);
6061
friend bool operator>( const Datetime &dt1, const Datetime& dt2);
@@ -114,6 +115,15 @@ namespace Rcpp {
114115
return newdt;
115116
}
116117

118+
inline Datetime operator+(const Datetime &datetime, int offset) {
119+
Datetime newdt(datetime.m_dt);
120+
newdt.m_dt += offset;
121+
time_t t = static_cast<time_t>(std::floor(newdt.m_dt));
122+
newdt.m_tm = *gmtime_(&t);
123+
newdt.m_us = static_cast<int>(::Rf_fround( (newdt.m_dt - t) * 1.0e6, 0.0));
124+
return newdt;
125+
}
126+
117127
inline double operator-(const Datetime& d1, const Datetime& d2) { return d1.m_dt - d2.m_dt; }
118128
inline bool operator<(const Datetime &d1, const Datetime& d2) { return d1.m_dt < d2.m_dt; }
119129
inline bool operator>(const Datetime &d1, const Datetime& d2) { return d1.m_dt > d2.m_dt; }

0 commit comments

Comments
 (0)