[time.cal.ym] (original) (raw)
30 Time library [time]
30.8 The civil calendar [time.cal]
30.8.13 Class year_month [time.cal.ym]
30.8.13.1 Overview [time.cal.ym.overview]
namespace std::chrono { class year_month { chrono::year y_; chrono::month m_; public: year_month() = default;constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;constexpr chrono::year year() const noexcept;constexpr chrono::month month() const noexcept;constexpr year_month& operator+=(const months& dm) noexcept;constexpr year_month& operator-=(const months& dm) noexcept;constexpr year_month& operator+=(const years& dy) noexcept;constexpr year_month& operator-=(const years& dy) noexcept;constexpr bool ok() const noexcept;};}
year_month represents a specific month of a specific year, but with an unspecified day.
year_month is a field-based time point with a resolution of months.
year_month is a trivially copyable and standard-layout class type.
30.8.13.2 Member functions [time.cal.ym.members]
constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
Effects: Initializes y_ with y, and m_ with m.
constexpr chrono::year year() const noexcept;
constexpr chrono::month month() const noexcept;
constexpr year_month& operator+=(const months& dm) noexcept;
Constraints: If the argument supplied by the caller for the months parameter is convertible to years, its implicit conversion sequence to yearsis worse than its implicit conversion sequence tomonths ([over.ics.rank]).
Effects: *this = *this + dm.
constexpr year_month& operator-=(const months& dm) noexcept;
Constraints: If the argument supplied by the caller for the months parameter is convertible to years, its implicit conversion sequence to yearsis worse than its implicit conversion sequence tomonths ([over.ics.rank]).
Effects: *this = *this - dm.
constexpr year_month& operator+=(const years& dy) noexcept;
Effects: *this = *this + dy.
constexpr year_month& operator-=(const years& dy) noexcept;
Effects: *this = *this - dy.
constexpr bool ok() const noexcept;
Returns: y_.ok() && m_.ok().
30.8.13.3 Non-member functions [time.cal.ym.nonmembers]
constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
Returns: x.year() == y.year() && x.month() == y.month().
constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
Effects: Equivalent to:if (auto c = x.year() <=> y.year(); c != 0) return c;return x.month() <=> y.month();
constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
Constraints: If the argument supplied by the caller for the months parameter is convertible to years, its implicit conversion sequence to yearsis worse than its implicit conversion sequence tomonths ([over.ics.rank]).
Returns: A year_month value z such that z.ok() && z - ym == dmis true.
Complexity: with respect to the value of dm.
constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
Constraints: If the argument supplied by the caller for the months parameter is convertible to years, its implicit conversion sequence to yearsis worse than its implicit conversion sequence tomonths ([over.ics.rank]).
constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
Constraints: If the argument supplied by the caller for the months parameter is convertible to years, its implicit conversion sequence to yearsis worse than its implicit conversion sequence tomonths ([over.ics.rank]).
constexpr months operator-(const year_month& x, const year_month& y) noexcept;
Returns: x.year() - y.year() + months{static_cast<int>(unsigned{x.month()}) - static_cast<int>(unsigned{y.month()})}
constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
Returns: (ym.year() + dy) / ym.month().
constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
template<class charT, class traits> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
Effects: Equivalent to:return os << format(os.getloc(), _STATICALLY-WIDEN_<charT>("{}/{:L}"), ym.year(), ym.month());
template<class charT, class traits, class Alloc = allocator<charT>> basic_istream<charT, traits>& from_stream(basic_istream<charT, traits>& is, const charT* fmt, year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr);
Effects: Attempts to parse the input stream isinto the year_month ym using the format flags given in the NTCTS fmtas specified in [time.parse].
If the parse fails to decode a valid year_month,is.setstate(ios_base::failbit) is called andym is not modified.
If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null.
If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.