day class

Represents a day of the month. For example, the 25th day of the month.

Syntax

class day; // C++20

Remarks

A day normally holds values in the range [1, 31]. It may hold non-negative values outside this range, but the behavior is unspecified if it isn't within the range [0, 255].

Members

Name Description
Constructors Construct a day.
ok Verify that the day value is in the valid range [1,31].
operator++ Increment this day.
operator+= Add the specified number of days to this day.
operator-- Decrement the day.
operator-= Subtract the specified number of days from this day
operator unsigned Get the day value as an unsigned integer.

Non-members

Name Description
from_stream Parse a day from the given stream using the specified format.
operator+ Add specified number of days to this day, returning a new day object.
operator- Subtract the specified number of days from this day, returning a new day object.
operator== Determine whether two day instances are equal.
operator<=> Compare this day against another day. The >, >=, <=, <, != operators are synthesized by the compiler.
operator<< Output a day to the given stream.
operator""d Create a day literal for a day in the month.

Requirements

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

Namespace: std::chrono

Compiler Option: /std:c++latest

Constructors

Constructs a day.

1) day() = default;
2) explicit constexpr day(unsigned d) noexcept;

Parameters

d
Construct a day with value d.

Remarks

1) The default constructor doesn't initialize the day value.
2) Construct a day with the day value initialized to d.

Example: Create a day

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

using namespace std::chrono;

int main()
{
    day d{1}; // day 1
    day d2 = 2d; // day 2

    std::cout << d << ", " << d2;

    return 0;
}
01, 02

ok

Check if the value stored in this day is in the valid range.

constexpr bool ok() const noexcept;

Return value

true if the day value is in the range [1,31]. Otherwise, false.

operator++

Add 1 to the day value.

1) constexpr std::chrono::day& operator++() noexcept;
2) constexpr std::chrono::day operator++(int) noexcept;

Return value

1) A reference to *this day after it has been incremented (a postfix increment).
2) A copy of the day, before it has been incremented (a prefix increment).

Example: operator++

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

using namespace std::chrono;

int main()
{
    day d{1};

    std::cout << d << " " << ++d << "\n"; // constexpr day& operator++() noexcept
    std::cout << d << " " << d++ << "\n"; // constexpr day operator++(int) noexcept
    std::cout << d;

    return 0;
}
01 02
02 02
03

Remarks

If the incremented result is out of the range [0, 255], then the stored value is unspecified.

operator--

Subtract 1 from the day value.

1) constexpr std::chrono::day& operator--() noexcept;
2) constexpr std::chrono::day operator--(int) noexcept;

Return value

1) A reference to *this day after it has been decremented (a postfix decrement).
2) A copy of the *day, before it has been decremented (a prefix decrement).

Example: operator--

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

int main()
{
    day d{5};
    std::cout << d << " " << --d << "\n"; // constexpr day& operator--() noexcept
    std::cout << d << " " << d-- << "\n"; // constexpr day operator--(int) noexcept
    std::cout << d << "\n";

    return 0;
}
05 04
04 04
03

Remarks

If the decremented result is out of the range [0, 255], then the stored value is unspecified.

operator+=

Add days to this day.

constexpr day& operator+=(const days& d) noexcept;

Parameters

d
The number of days to add.

Return value

*this

If the result is outside the range [0, 255], then the stored value is unspecified.

operator-=

Subtract days from this day.

constexpr day& operator-=(const days& d) noexcept;

Parameters

d
The number of days to subtract.

Return value

*this. If the result is outside the range [0, 255], then the stored value is unspecified.

operator unsigned

Get the day value.

explicit constexpr operator unsigned() const noexcept;

Return value

The value of the day

Example: operator unsigned()

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

int main()
{
    chrono::day d{14d};
    unsigned dayValue = static_cast<unsigned>(d);
    cout << dayValue << "\n";
    
    return 0;
}
14

See also

<chrono>
month_day class
month_day_last class
year_month_day
year_month_day_last
Header Files Reference