30#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
58#if defined(_MSC_VER) && (_MSC_VER < 1900)
73#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
83#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
98 std::chrono::hours
h_{0};
99 std::chrono::minutes
m_{0};
100 std::chrono::seconds
s_{0};
115 to_sys(
date::year y, std::chrono::seconds offset, std::chrono::seconds save)
const;
120 std::chrono::seconds offset, std::chrono::minutes prev_save)
const;
160 explicit Rule(
const std::string& s);
169 const std::chrono::minutes&
save()
const {
return save_;}
189 static void split_overlaps(std::vector<Rule>& rules, std::size_t i, std::size_t& e);
191 static void split(std::vector<Rule>& rules, std::size_t i, std::size_t k,
227#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
263 std::int32_t tt_gmtoff;
264 unsigned char tt_isdst;
265 unsigned char tt_abbrind;
266 unsigned char pad[2];
269static_assert(
sizeof(ttinfo) == 8,
"");
271struct expanded_ttinfo
273 std::chrono::seconds offset;
281 const expanded_ttinfo* info;
283 transition(
sys_seconds tp,
const expanded_ttinfo* i =
nullptr)
290 operator<<(std::ostream& os,
const transition& t)
292 using date::operator<<;
293 os << t.timepoint <<
"Z ";
294 if (t.info->offset >= std::chrono::seconds{0})
297 if (t.info->is_dst > 0)
301 os << t.info->abbrev;
312#if defined(_MSC_VER) && (_MSC_VER < 1900)
friend std::istream & operator>>(std::istream &is, MonthDayTime &x)
void canonicalize(date::year y)
union date::detail::MonthDayTime::U u
int compare(date::year y, const MonthDayTime &x, date::year yx, std::chrono::seconds offset, std::chrono::minutes prev_save) const
sys_seconds to_sys(date::year y, std::chrono::seconds offset, std::chrono::seconds save) const
sys_days to_sys_days(date::year y) const
date::month month() const
sys_seconds to_time_point(date::year y) const
friend std::ostream & operator<<(std::ostream &os, const MonthDayTime &x)
static void split_overlaps(std::vector< Rule > &rules)
MonthDayTime starting_at_
const std::string & abbrev() const
friend bool operator<(const std::string &x, const Rule &y)
friend std::ostream & operator<<(std::ostream &os, const Rule &r)
friend bool operator==(const Rule &x, const date::year &y)
friend bool operator<(const Rule &x, const Rule &y)
const std::chrono::minutes & save() const
const std::string & name() const
const date::year & starting_year() const
date::year starting_year_
friend bool operator==(const Rule &x, const std::string &y)
friend bool operator==(const date::year &x, const Rule &y)
const date::year & ending_year() const
friend bool operator==(const Rule &x, const Rule &y)
friend bool operator<(const date::year &x, const Rule &y)
friend bool operator<(const Rule &x, const std::string &y)
static bool overlaps(const Rule &x, const Rule &y)
date::month month() const
friend bool operator==(const std::string &x, const Rule &y)
std::chrono::minutes save_
const MonthDayTime & mdt() const
static void split(std::vector< Rule > &rules, std::size_t i, std::size_t k, std::size_t &e)
friend bool operator<(const Rule &x, const date::year &y)
static CONSTCD11 year max() NOEXCEPT
static CONSTCD11 year min() NOEXCEPT
bool operator>(const Rule &x, const Rule &y)
bool operator==(const Rule &x, const Rule &y)
std::ostream & operator<<(std::ostream &os, const MonthDayTime &x)
std::istream & operator>>(std::istream &is, MonthDayTime &x)
bool operator>=(const Rule &x, const Rule &y)
bool operator<(const Rule &x, const Rule &y)
bool operator<=(const Rule &x, const Rule &y)
bool operator!=(const Rule &x, const Rule &y)
CONSTDATA date::month jan
local_time< std::chrono::seconds > local_seconds
CONSTCD11 hh_mm_ss< std::chrono::duration< Rep, Period > > make_time(const std::chrono::duration< Rep, Period > &d)
sys_time< std::chrono::seconds > sys_seconds
sys_time< days > sys_days
date::month_day month_day_
std::chrono::minutes initial_save_
std::pair< const Rule *, date::year > first_rule_
union date::detail::zonelet::U u
std::string initial_abbrev_
std::pair< const Rule *, date::year > last_rule_
std::chrono::seconds gmtoff_
zonelet & operator=(const zonelet &)=delete
date::month_weekday_last month_weekday_last_
date::month_day month_day_
U & operator=(const date::month_day &x)
U & operator=(const U &)=delete
std::chrono::minutes save_