month
class
Represents a month of a year. For example, July.
Syntax
class month; // C++20
Remarks
A month
normally holds values in the range [1, 12]. It can also hold non-negative values outside this range.
See Month constants, below, for constants that you can use with the month
class.
Members
Name | Description |
---|---|
Constructors | Construct a month . |
ok |
Verify that the month value is in the valid range [1,12]. |
operator++ |
Increment the month . |
operator+= |
Add the specified number of months to this month . |
operator-- |
Decrement this month . |
operator-= |
Subtract the specified number of months from this month . |
operator unsigned |
Get the month value. |
Non-members
Name | Description |
---|---|
from_stream |
Parse a month from the given stream using the specified format. |
operator+ |
Add specified number of months to this month , returning a new month instance. |
operator- |
Subtract the specified number of months from this month. Returns a new month instance. |
operator== |
Determine whether two months are equal. |
operator<=> |
Compare this month against another month. The >, >=, <=, <, != operators are synthesized by the compiler. |
operator<< |
Output a month to the given stream. |
Requirements
Header: <chrono>
(since C++20)
Namespace: std::chrono
Compiler Option: /std:c++latest
Constructors
Construct a month
.
1) month() = default;
2) explicit constexpr month(unsigned m) noexcept;
Parameters
m
Construct a month
with value m
.
Remarks
1) The default constructor doesn't initialize the day value.
2) Construct a month
with the day value initialized to m
.
ok
Check if the value stored in this month
is in the valid range.
constexpr bool ok() const noexcept;
Return value
true
if the month value is in the range [1,12]. Otherwise, false
.
operator++
Increment the month value.
1) constexpr month& operator++() noexcept;
2) constexpr month operator++(int) noexcept;
Return value
1) A reference to *this
month after it has been incremented (a postfix increment).
2) A copy of the month
, 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()
{
month m{ January };
month m2{4}; // April
std::cout << m << " " << ++m << "\n"; // constexpr month& operator++() noexcept
std::cout << m << " " << m++ << "\n"; // constexpr month operator++(int) noexcept
std::cout << m << "\n";
std::cout << m2 << "\n";
return 0;
}
Jan Feb
Feb Feb
Mar
Apr
Remarks
If the result exceeds 12, it's set to 1.
operator--
Subtract 1 from the month value.
1) constexpr month& operator--() noexcept;
2) constexpr month operator--(int) noexcept;
Return value
1) A reference to *this
month
after it has been decremented (a postfix decrement).
2) A copy of the month
before it has been decremented (a prefix decrement).
Example: operator--
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
month m{May};
cout << m << " " << --m << "\n"; // constexpr month& operator++() noexcept
cout << m << " " << m-- << "\n"; // constexpr month operator++(int) noexcept
cout << m << "\n";
return 0;
}
May Apr
Apr Apr
Mar
Remarks
If the decremented result is less than 1, it's set to 12.
operator+=
Add months to this month
.
constexpr month& operator+=(const months& m) noexcept;
Parameters
m
The number of months to add.
Return value
*this
operator-=
Subtract months
from this month
.
constexpr month& operator-=(const months& m) noexcept;
Parameters
m
The months to subtract.
Return value
*this
.
operator unsigned
Get the unsigned month
value.
explicit constexpr operator unsigned() const noexcept;
Return value
The unsigned value of this month
Example: operator unsigned()
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
month m{July};
unsigned monthValue = static_cast<unsigned>(m);
std::cout << monthValue << "\n";
return 0;
}
7
Month constants
(C++20) The <chrono>
header defines the following constants that you can use with month
for greater convenience, type-safety, and maintainability of your code. These constants are in scope when std::chrono
is in scope.
// Calendrical constants
inline constexpr month January{1};
inline constexpr month February{2};
inline constexpr month March{3};
inline constexpr month April{4};
inline constexpr month May{5};
inline constexpr month June{6};
inline constexpr month July{7};
inline constexpr month August{8};
inline constexpr month September{9};
inline constexpr month October{10};
inline constexpr month November{11};
inline constexpr month December{12};
See also
<chrono>
month_day
Class
month_day_last
Class
month_weekday
Class
month_weekday_last
class