std::chrono::operator/(calendar)

From cppreference.com
< cpp‎ | chrono
Date and time library
Time point
(C++11)
(C++20)
Duration
(C++11)
Clocks
(C++11)
(C++11)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Time of day
(C++20)(C++20)
(C++20)(C++20)
(C++20)

Calendar
(C++20)
(C++20)
(C++20)
(C++20)
operator/
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
Time zone
(C++20)
(C++20)
(C++20) (C++20) (C++20) (C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
chrono I/O
(C++20)
C-style date and time
Defined in header <chrono>
year_month
constexpr auto operator/ ( const std::chrono::year & y,

const std::chrono::month & m ) noexcept

- > std::chrono::year_month ;
(1) (since C++20)
constexpr auto operator/ ( const std::chrono::year & y, int m ) noexcept
- > std::chrono::year_month ;
(2) (since C++20)
month_day
constexpr auto operator/ ( const std::chrono::month & m,

const std::chrono::day & d ) noexcept

- > std::chrono::month_day ;
(3) (since C++20)
constexpr auto operator/ ( const std::chrono::month & m, int d ) noexcept
- > std::chrono::month_day ;
(4) (since C++20)
constexpr auto operator/ ( int m, const std::chrono::day & d ) noexcept
- > std::chrono::month_day ;
(5) (since C++20)
constexpr auto operator/ ( const std::chrono::day & d,

const std::chrono::month & m ) noexcept

- > std::chrono::month_day ;
(6) (since C++20)
constexpr auto operator/ ( const std::chrono::day & d, int m ) noexcept
- > std::chrono::month_day ;
(7) (since C++20)
month_day_last
constexpr auto operator/ ( const std::chrono::month & m,

std::chrono::last_spec ) noexcept

- > std::chrono::month_day_last ;
(8) (since C++20)
constexpr auto operator/ ( int m, std::chrono::last_spec ) noexcept
- > std::chrono::month_day_last ;
(9) (since C++20)
constexpr auto operator/ ( std::chrono::last_spec,

const std::chrono::month & m ) noexcept

- > std::chrono::month_day_last ;
(10) (since C++20)
constexpr auto operator/ ( std::chrono::last_spec, int m ) noexcept
- > std::chrono::month_day_last ;
(11) (since C++20)
month_weekday
constexpr auto operator/ ( const std::chrono::month & m,

const std::chrono::weekday_indexed & wdi ) noexcept

- > std::chrono::month_weekday ;
(12) (since C++20)
constexpr auto operator/ ( int m, const std::chrono::weekday_indexed & wdi ) noexcept
- > std::chrono::month_weekday ;
(13) (since C++20)
constexpr auto operator/ ( const std::chrono::weekday_indexed & wdi,

const std::chrono::month & m ) noexcept

- > std::chrono::month_weekday ;
(14) (since C++20)
constexpr auto operator/ ( const std::chrono::weekday_indexed & wdi, int m ) noexcept
- > std::chrono::month_weekday ;
(15) (since C++20)
month_weekday_last
constexpr auto operator/ ( const std::chrono::month & m,

const std::chrono::weekday_last & wdl ) noexcept

- > std::chrono::month_weekday_last ;
(16) (since C++20)
constexpr auto operator/ ( int m, const std::chrono::weekday_last & wdl ) noexcept
- > std::chrono::month_weekday_last ;
(17) (since C++20)
constexpr auto operator/ ( const std::chrono::weekday_last & wdl,

const std::chrono::month & m ) noexcept

- > std::chrono::month_weekday_last ;
(18) (since C++20)
constexpr auto operator/ ( const std::chrono::weekday_last & wdl, int m ) noexcept
- > std::chrono::month_weekday_last ;
(19) (since C++20)
year_month_day
constexpr auto operator/ ( const std::chrono::year_month & ym,

const std::chrono::day & d ) noexcept

- > std::chrono::year_month_day ;
(20) (since C++20)
constexpr auto operator/ ( const std::chrono::year_month & ym, int d ) noexcept
- > std::chrono::year_month_day ;
(21) (since C++20)
constexpr auto operator/ ( const std::chrono::year & y,

const std::chrono::month_day & md ) noexcept

- > std::chrono::year_month_day ;
(22) (since C++20)
constexpr auto operator/ ( int y, const std::chrono::month_day & md ) noexcept
- > std::chrono::year_month_day ;
(23) (since C++20)
constexpr auto operator/ ( const std::chrono::month_day & md,

const std::chrono::year & y ) noexcept

- > std::chrono::year_month_day ;
(24) (since C++20)
constexpr auto operator/ ( const std::chrono::month_day & md, int y ) noexcept
- > std::chrono::year_month_day ;
(25) (since C++20)
year_month_day_last
constexpr auto operator/ ( const std::chrono::year_month & ym,

std::chrono::last_spec ) noexcept

- > std::chrono::year_month_day_last ;
(26) (since C++20)
constexpr auto operator/ ( const std::chrono::year & y,

const std::chrono::month_day_last & mdl ) noexcept

- > std::chrono::year_month_day_last ;
(27) (since C++20)
constexpr auto operator/ ( int y, const std::chrono::month_day_last & mdl ) noexcept
- > std::chrono::year_month_day_last ;
(28) (since C++20)
constexpr auto operator/ ( const std::chrono::month_day_last & mdl,

const std::chrono::year & y ) noexcept

- > std::chrono::year_month_day_last ;
(29) (since C++20)
constexpr auto operator/ ( const std::chrono::month_day_last & mdl, int y ) noexcept
- > std::chrono::year_month_day_last ;
(30) (since C++20)
year_month_weekday
constexpr auto operator/ ( const std::chrono::year_month & ym,

const std::chrono::weekday_indexed & wdi ) noexcept

- > std::chrono::year_month_weekday ;
(31) (since C++20)
constexpr auto operator/ ( const std::chrono::year & y,

const std::chrono::month_weekday & mwd ) noexcept

- > std::chrono::year_month_weekday ;
(32) (since C++20)
constexpr auto operator/ ( int y, const std::chrono::month_weekday & mwd ) noexcept
- > std::chrono::year_month_weekday ;
(33) (since C++20)
constexpr auto operator/ ( const std::chrono::month_weekday & mwd,

const std::chrono::year & y ) noexcept

- > std::chrono::year_month_weekday ;
(34) (since C++20)
constexpr auto operator/ ( const std::chrono::month_weekday & mwd, int y ) noexcept
- > std::chrono::year_month_weekday ;
(35) (since C++20)
year_month_weekday_last
constexpr auto operator/ ( const std::chrono::year_month & ym,

const std::chrono::weekday_last & wdl ) noexcept

- > std::chrono::year_month_weekday_last ;
(36) (since C++20)
constexpr auto operator/ ( const std::chrono::year & y,

const std::chrono::month_weekday_last & mwdl ) noexcept

- > std::chrono::year_month_weekday_last ;
(37) (since C++20)
constexpr auto operator/ ( int y, const std::chrono::month_weekday_last & mwdl ) noexcept
- > std::chrono::year_month_weekday_last ;
(38) (since C++20)
constexpr auto operator/ ( const std::chrono::month_weekday_last & mwdl,

const std::chrono::year & y ) noexcept

- > std::chrono::year_month_weekday_last ;
(39) (since C++20)
constexpr auto operator/ ( const std::chrono::month_weekday_last & mwdl, int y ) noexcept
- > std::chrono::year_month_weekday_last ;
(40) (since C++20)

These operator/ overloads provide a conventional syntax for the creation of Proleptic Gregorian calendar

For creation of a full date, any of the following three orders are accepted:

  • year/month/day,
  • month/day/year,
  • day/month/year.

In each case day can replaced with one of:

  • std::chrono::last, for the last day of the month;
  • weekday[i], for the ith weekday of the month;
  • weekday[std::chrono::last], for the last weekday of the month.

A plain integer is accepted if its meaning is unambiguous from the types of other operands: 2005y/4/5 is allowed, but 5/April/2005

Partial-date types (year_month, month_day, etc.) can be created by not applying the second operator/

Return value

12,14) std::chrono::month_weekday (m, wdi)
20) std::chrono::year_month_day (ym.year ( ), ym.month ( ), d)
21) std::chrono::year_month_day (ym.year ( ), ym.month ( ), std::chrono::day (d) )
22,24) std::chrono::year_month_day (y, md.month ( ), md.day ( ) )
23,25) std::chrono::year_month_day ( std::chrono::year (y), md.month ( ), md.day ( ) )
31) std::chrono::year_month_weekday (ym.year ( ), ym.month ( ), wdi)
32,34) std::chrono::year_month_weekday (y, mwd.month ( ), mwd.weekday_indexed ( ) )
33,35) std::chrono::year_month_weekday ( std::chrono::year (y), mwd.month ( ), mwd.weekday_indexed ( ) )
36) std::chrono::year_month_weekday_last (ym.year ( ), ym.month ( ), wdl)
37,39) std::chrono::year_month_weekday_last (y, mwdl.month ( ), mwdl.weekday_last ( ) )
38,40) std::chrono::year_month_weekday_last ( std::chrono::year (y), mwdl.month ( ), mwdl.weekday_last ( ) )

Example

#include <chrono>
using namespace std::chrono;
 
constexpr auto ym{2021y/8};
static_assert(ym == year_month(year(2021), August));
 
constexpr auto md{9/15d};
static_assert(md == month_day(September, day(15)));
 
constexpr auto mdl{October/last};
static_assert(mdl == month_day_last(month(10)));
 
constexpr auto mw{11/Monday[3]};
static_assert(mw == month_weekday(November, Monday[3]));
 
constexpr auto mwdl{December/Sunday[last]};
static_assert(mwdl == month_weekday_last(month(12), weekday_last(Sunday)));
 
// Those 3 year/month/day orders that people actually use on this planet and beyond:
constexpr auto ymd{year(2021)/January/day(23)};
static_assert(ymd == month{1}/23/2021);
static_assert(ymd == day{23}/1/2021);
static_assert(ymd == year_month_day(2021y, month(January), 23d));
 
int main() {}