MCPcopy Create free account
hub / github.com/RcppCore/Rcpp / Datetime

Class Datetime

inst/include/Rcpp/date_datetime/Datetime.h:33–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31namespace Rcpp {
32
33 class Datetime {
34 public:
35 Datetime() {
36 m_dt = 0;
37 update_tm();
38 }
39 Datetime(SEXP s);
40
41 // from double, just like POSIXct
42 Datetime(const double &dt) {
43 m_dt = dt;
44 update_tm();
45 }
46 Datetime(const std::string &s, const std::string &fmt="%Y-%m-%d %H:%M:%OS");
47
48 double getFractionalTimestamp(void) const { return m_dt; }
49
50 int getMicroSeconds() const { return m_us; }
51 int getSeconds() const { return m_tm.tm_sec; }
52 int getMinutes() const { return m_tm.tm_min; }
53 int getHours() const { return m_tm.tm_hour; }
54 int getDay() const { return m_tm.tm_mday; }
55 int getMonth() const { return m_tm.tm_mon + 1; } // makes it 1 .. 12
56 int getYear() const { return m_tm.tm_year ; }
57 int getWeekday() const { return m_tm.tm_wday + 1; } // makes it 1 .. 7
58 int getYearday() const { return m_tm.tm_yday + 1; } // makes it 1 .. 366
59
60 // Minimal set of date operations.
61 friend Datetime operator+( const Datetime &dt, double offset);
62 friend Datetime operator+( const Datetime &dt, int offset);
63 friend double operator-( const Datetime &dt1, const Datetime& dt2);
64 friend bool operator<( const Datetime &dt1, const Datetime& dt2);
65 friend bool operator>( const Datetime &dt1, const Datetime& dt2);
66 friend bool operator==(const Datetime &dt1, const Datetime& dt2);
67 friend bool operator>=(const Datetime &dt1, const Datetime& dt2);
68 friend bool operator<=(const Datetime &dt1, const Datetime& dt2);
69 friend bool operator!=(const Datetime &dt1, const Datetime& dt2);
70
71 inline int is_na() const { return traits::is_na<REALSXP>(m_dt); }
72
73 operator double() const { return m_dt; }
74
75 inline std::string format(const char *fmt = "%Y-%m-%d %H:%M:%S") const {
76 char txtiso[64], txtsec[64];
77 time_t t = static_cast<time_t>(std::floor(m_dt));
78 struct tm temp = *localtime(&t); // localtime, not gmtime
79 size_t res = ::strftime(txtiso, 63, fmt, &temp);
80 if (res == 0) {
81 return std::string("");
82 } else {
83 res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us);
84 if (res <= 0) {
85 return std::string("");
86 } else {
87 return std::string(txtsec);
88 }
89 }
90 }

Callers 2

Datetime>Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected