year_month_weekday_last class

A specific year, month, and last weekday of the month.

Syntax

class year_month_weekday_last; // C++20

Remarks

year_month_weekday_last supports years- and months-oriented arithmetic, but not days-oriented arithmetic. For days-oriented arithmetic, use the sys_days conversion to convert to a sys_days, which supports days-oriented arithmetic.

year_month_weekday_last is a trivially copyable and standard-layout class type.

Members

Name Description
Constructor Construct a year_month_weekday_last with the specified month and weekday.
month Get the month value.
ok Check if the year_month_weekday_last is valid.
operator+= Add the specified number of months or years.
operator-= Subtract the specified number of months or years.
operator local_days Get the count of days from the system_clock epoch to this year_month_weekday_last as local_days.
operator sys_days Get the count of days from the system_clock epoch to this year_month_weekday_last as sys_days.
weekday Get the weekday.
weekday_last Get the weekday_last stored in this year_month_weekday_last.
year Get the year.

Non-members

Name Description
operator+ Add months or years.
operator- Subtract months or years.
operator== Determine whether two year_month_weekday_last values are equal.
operator<< Output a year_month_weekday_last to the given stream.

Requirements

Header: <chrono> (since C++20)

Namespace: std::chrono

Compiler Option: /std:c++latest

Constructor

Constructs a year_month_weekday_last.

constexpr year_month_weekday_last(const year& y, const month& m, const weekday_last& wdl) noexcept

Parameters

m
The month value.

wdl
The weekday_last value.

y
The year value.

For information about C++20 syntax used to specify dates, see operator/

Example: Create a year_month_weekday_last

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday_last ymwl{ 1997y / January / Wednesday[last] };
    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]

month

Get the month value.

constexpr month month() const noexcept;

Return value

The month value.

ok

Check if the value stored in this year_month_weekday_last is valid. The year, month, and weekday_last stored in this year_month_weekday_last must all be ok for this function to return true. Otherwise, returns false.

constexpr bool ok() const noexcept;

Return value

true if the year_month_weekday_last value is valid. Otherwise, false.
A year_month_weekday_last is valid if the month, weekday_indexed, and year are all valid.

operator+=

Add months or years to this year_month_weekday_last.

1) constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
2) constexpr year_month_weekday_last& operator+=(const years& y) noexcept;

Parameters

m
The number of months to add.

y
The number of years to add.

Return value

*this which reflects the result of the addition.

Example: operator+=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday_last ymwl{ year(1997) / January / Wednesday[last] };
    std::cout << ymwl << '\n';

    ymwl += months{ 1 };
    ymwl += years{ 1 };

    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]
1998/Feb/Wed[last]

operator-=

Subtract months or years from this year_month_weekday_last.

1) constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday_last& operator-=(const years& y) noexcept;

Parameters

m
The number of months to subtract.

y
The number of years to subtract.

Return value

*this which reflects the result of the subtraction.

Example: operator-=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday_last ymwl{ year(1997) / January / Wednesday[last] };
    std::cout << ymwl << '\n';

    ymwl -= months{ 1 };
    ymwl -= years{ 1 };

    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]
1995/Dec/Wed[last]

operator local_days

Get the count of days from the system_clock epoch (1/1/1970) to this year_month_weekday_last as local_days

constexpr explicit operator local_days() const noexcept;

Return value

If ok(), returns a count of days as local_days{sys_days{*this}.time_since_epoch()}. Otherwise the returned value is unspecified.

operator sys_days

Get the count of days from the system_clock epoch (1/1/1970) to this year_month_day as sys_days.

constexpr operator sys_days() const noexcept;

Return value

If ok() == true, returns a sys_days that represents the last weekday() of year() / month() (note: the / is the date operator, not a division). Otherwise the returned value is unspecified.

weekday

Get the weekday.

constexpr weekday weekday() const noexcept;

Return value

The weekday.

weekday_last

Get the weekday_last stored in this year_month_weekday_last.

constexpr weekday_indexed weekday_last() const noexcept;

Return value

The weekday_last.

year

Get the year value.

constexpr year year() const noexcept;

Return value

The year value.

See also

<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday
operator/
Header Files Reference