weekday
class
Represents a day of the week in the Gregorian calendar. For example, Tuesday.
Syntax
class weekday; // C++20
Remarks
A weekday
can hold a value of [0, 255], but typically holds a value [0, 6] to represent a day of the week.
See Weekday constants, below, for constants that you can use with the weekday
class.
Members
Name | Description |
---|---|
Constructors | Construct a weekday . |
c_encoding |
Get the weekday value. |
iso_encoding |
Get the ISO 8601 weekday value. |
ok |
Check if the weekday value is valid. |
operator++ |
Increment the weekday . |
operator+= |
Add the specified number of weekdays to this weekday . |
operator-- |
Decrement the weekday . |
operator-= |
Subtract the specified number of weekdays from this weekday . |
operator[] |
Create a weekday_indexed or weekday_last from this weekday . |
Non-members
Name | Description |
---|---|
from_stream |
Parse a weekday from the given stream using the specified format. |
operator+ |
Add specified number of weekdays to this weekday . |
operator- |
Subtract the specified number of weekdays from this weekday , or find the difference between two weekday objects. |
operator== |
Determine whether two weekday objects are equal. |
operator<< |
Output a weekday to a stream. |
Requirements
Header: <chrono>
Since C++20
Namespace: std::chrono
Compiler Option: /std:c++latest
Constructors
Constructs a weekday
.
1) weekday() = default; // C++20
2) explicit constexpr weekday(unsigned wd) noexcept; // C++20
3) constexpr weekday(const sys_days& dp) noexcept; // C++20
4) explicit constexpr weekday(const local_days& dp) noexcept; // C++20
Parameters
dp
Construct a weekday
using the day of the week dp
.
wd
Construct a weekday
with value wd
.
Remarks
1) The default constructor doesn't initialize the weekday value.
2) Construct a weekday
with the specified value.
If wd
is 7, the weekday
is constructed with a value of 0.
Don't initialize with values over 255 or the resulting weekday
will have an unspecified value.
3) Computes what day of the week corresponds to the std::chrono::sys_days
value dp
, and constructs a weekday
using that day.
4) Computes the day of the week that corresponds to the std::chrono::local_days
value dp
, and constructs a weekday
using that day. It behaves as if you created the weekday
using weekday(std::chrono::sys_days(dp.time_since_epoch()))
.
Example: Create a weekday
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
weekday wd{ Wednesday };
weekday wd2{ 3 };
std::cout << wd << '\n' << wd2;
return 0;
}
Wednesday
Wednesday
c_encoding
constexpr unsigned c_encoding() const noexcept;
Return value
The weekday value.
iso_encoding
The weekday value, but with Sunday (0) is interpreted as 7 per ISO 8601.
constexpr unsigned iso_encoding() const noexcept;
Return value
The weekday value.
ok
Check if the value stored in this weekday
is in the valid range.
constexpr bool is_leap() const noexcept;
Return value
true
if the weekday value is in the range [0, 6]. Otherwise, false
.
operator++
Add 1 to the weekday value.
1) constexpr std::chrono::weekday& operator++() noexcept;
2) constexpr std::chrono::weekday operator++(int) noexcept;
Return value
1) A reference to *this
weekday after it has been incremented (a postfix increment).
2) A copy of the weekday
, before it has been incremented (a prefix increment).
Example: operator++
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
std::chrono::weekday wd{Thursday};
std::cout << wd << " " << ++wd << "\n"; // constexpr weekday& operator++() noexcept
std::cout << wd << " " << wd++ << "\n"; // constexpr weekday operator++(int) noexcept
std::cout << wd << "\n";
return 0;
}
Thu Fri
Fri Fri
Sat
Remarks
The incremented value is modulo 7. It will always be in the range [0, 6].
operator--
Subtract 1 from the weekday
value.
1) constexpr std::chrono::weekday& operator--() noexcept;
2) constexpr std::chrono::weekday operator--(int) noexcept;
Return value
1) A reference to *this
weekday
after it has been decremented (a postfix decrement).
2) A copy of the weekday
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()
{
weekday y = weekday{Thursday};
cout << y << " " << --y << "\n"; // constexpr weekday& operator--() noexcept
cout << y << " " << y-- << "\n"; // constexpr weekday operator--(int) noexcept
cout << y << "\n";
return 0;
}
Thu Wed
Wed Wed
Tue
Remarks
If the decremented result is less than 0, it's set to 6.
operator+=
Add days to a weekday
.
constexpr weekday& operator+=(const days& d) noexcept;
Parameters
*d*
The number of days to add.
Return value
The value of *this + d
. The result will be modulo 7, in the range [0, 6].
operator-=
Subtract days from the weekday
.
constexpr weekday& operator-=(const days& d) noexcept;
Parameters
*d*
The number of days to subtract.
Return value
The value of *this - d
. The result will be modulo 7, in the range [0, 6].
operator[]
Create a weekday_indexed or weekday_last from this weekday
.
1) std::chrono::weekday_indexed(*this, index) // C++20
2) std::chrono::weekday_last(*this) // C++20
Return value
1) std::chrono::weekday_indexed(*this, index)
2) std::chrono::weekday_last(*this)
Example: operator[]
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
constexpr auto firstMondayInJanuary =
year_month_day{ Monday[2] / January / 2021y };
std::cout << firstMondayInJanuary << "\n";
constexpr auto lastMondayInJanuary =
year_month_day{ Tuesday[last] / January / 2021y };
std::cout << lastMondayInJanuary << "\n";
}
2021-01-11
2021-01-26
Weekday constants
(C++20) The <chrono>
header defines the following constants that you can use with weekday
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 std::chrono::weekday Sunday{0};
inline constexpr std::chrono::weekday Monday{1};
inline constexpr std::chrono::weekday Tuesday{2};
inline constexpr std::chrono::weekday Wednesday{3};
inline constexpr std::chrono::weekday Thursday{4};
inline constexpr std::chrono::weekday Friday{5};
inline constexpr std::chrono::weekday Saturday{6};
See also
weekday_last
class
weekday_indexed
class
<chrono>
Header Files Reference