21#ifndef Rcpp__Datetime_h
22#define Rcpp__Datetime_h
26#if defined(WIN32) || defined(__WIN32) || defined(__WIN32__)
45 Datetime(
const std::string &s,
const std::string &fmt=
"%Y-%m-%d %H:%M:%OS");
72 operator double()
const {
return m_dt; }
74 inline std::string
format(
const char *fmt =
"%Y-%m-%d %H:%M:%S")
const {
75 char txtiso[64], txtsec[64];
76 time_t t =
static_cast<time_t
>(std::floor(
m_dt));
77 struct tm temp = *localtime(&t);
78 size_t res = ::strftime(txtiso, 63, fmt, &temp);
80 return std::string(
"");
82 res = ::snprintf(txtsec, 63,
"%s.%06d", txtiso,
m_us);
84 return std::string(
"");
86 return std::string(txtsec);
100 if (R_FINITE(
m_dt)) {
101 double dt = std::floor(
m_dt);
102 time_t t =
static_cast<time_t
>(dt);
105 m_us =
static_cast<int>(::Rf_fround( (
m_dt - dt) * 1.0e6, 0.0));
139 newdt.
m_dt += offset;
140 double dt = std::floor(newdt.
m_dt);
141 time_t t =
static_cast<time_t
>(dt);
143 newdt.
m_us =
static_cast<int>(::Rf_fround( (newdt.
m_dt - dt) * 1.0e6, 0.0));
149 newdt.
m_dt += offset;
150 double dt = std::floor(newdt.
m_dt);
151 time_t t =
static_cast<time_t
>(dt);
153 newdt.
m_us =
static_cast<int>(::Rf_fround( (newdt.
m_dt - dt) * 1.0e6, 0.0));
int getMicroSeconds() const
friend bool operator>(const Datetime &dt1, const Datetime &dt2)
friend bool operator==(const Datetime &dt1, const Datetime &dt2)
friend bool operator<=(const Datetime &dt1, const Datetime &dt2)
double getFractionalTimestamp(void) const
friend std::ostream & operator<<(std::ostream &s, const Datetime d)
friend double operator-(const Datetime &dt1, const Datetime &dt2)
static unsigned int baseYear()
std::string format(const char *fmt="%Y-%m-%d %H:%M:%S") const
friend bool operator>=(const Datetime &dt1, const Datetime &dt2)
friend Datetime operator+(const Datetime &dt, double offset)
Datetime(const double &dt)
friend bool operator<(const Datetime &dt1, const Datetime &dt2)
friend bool operator!=(const Datetime &dt1, const Datetime &dt2)
internal implementation details
double caster< Rcpp::Datetime, double >(Rcpp::Datetime from)
Rcpp::Datetime caster< double, Rcpp::Datetime >(double from)
bool is_na< REALSXP >(double x)
std::ostream & operator<<(std::ostream &os, const Date d)
bool operator>=(const Date &d1, const Date &d2)
bool operator!=(const Date &d1, const Date &d2)
double operator-(const Date &d1, const Date &d2)
bool operator>(const Date &d1, const Date &d2)
attribute_hidden struct tm * gmtime_(const time_t *const x)
SEXP wrap< Rcpp::Datetime >(const Rcpp::Datetime &dt)
SEXP wrap_extra_steps< Rcpp::Datetime >(SEXP)
bool operator<(const Date &d1, const Date &d2)
bool operator==(const Date &d1, const Date &d2)
bool operator<=(const Date &d1, const Date &d2)
Date operator+(const Date &date, int offset)