表示月份的一天。 例如,月份的第 25 天。
语法
class day; // C++20
注解
一个 day
通常在 [1, 31] 范围内保存值。 它可以在此范围之外保留非负值,但如果行为不在 [0, 255] 范围内,则不指定该行为。
成员
名称 | DESCRIPTION |
---|---|
构造 函数 | 构造一个 day 。 |
ok |
验证日期值是否在有效范围内 [1,31]。 |
operator++ |
递增此 day 。 |
operator+= |
向此 day 添加指定的天数。 |
operator-- |
day 递减 . |
operator-= |
从此减去指定天数 day |
operator unsigned |
获取日值作为无符号整数。 |
非成员
名称 | DESCRIPTION |
---|---|
from_stream |
使用指定的格式从给定流分析 a day 。 |
operator+ |
为此 day 添加指定的天数,返回一个新 day 对象。 |
operator- |
从此 day 值中减去指定的天数,返回一个新 day 对象。 |
operator== |
确定两个 day 实例是否相等。 |
operator<=> |
将此 day 与另一个 day 进行比较。
>, >=, <=, <, != 运算符由编译器合成。 |
operator<< |
向给定流输出 a day 。 |
operator""d |
为月份中的某一 day 天创建文本。 |
要求
页眉:<chrono>
(自C++20以来)
Namespace:std::chrono
编译器选项:/std:c++latest
构造函数
构造一个 day
。
1) day() = default;
2) explicit constexpr day(unsigned d) noexcept;
参数
d
使用值d
构造一个 day
。
注解
1) 默认构造函数不会初始化日期值。
2) 构造一个 day
初始化为 d
的日期值。
示例:创建 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
检查存储在此 day
中的值是否位于有效范围内。
constexpr bool ok() const noexcept;
返回值
true
如果日期值在 [1,31] 范围内,则为 。 否则,false
。
operator++
将 1 添加到日期值。
1) constexpr std::chrono::day& operator++() noexcept;
2) constexpr std::chrono::day operator++(int) noexcept;
返回值
1) 对后它的引用*this
day
已递增(后缀递增)。
2) 副本 day
,在递增 之前 (前缀增量)。
示例: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
注解
如果递增的结果超过 [0, 255]范围,则未指定存储的值。
operator--
从日期值中减去 1。
1) constexpr std::chrono::day& operator--() noexcept;
2) constexpr std::chrono::day operator--(int) noexcept;
返回值
1) 对递减后的一天的引用*this
(后缀递减)。
2) 副本 *day
,在递减 之前 (前缀递减)。
示例: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
注解
如果递减结果超过 [0, 255]范围,则未指定存储的值。
operator+=
为此 day
添加天数。
constexpr day& operator+=(const days& d) noexcept;
参数
d
要添加的天数。
返回值
*this
如果结果不在 [0, 255] 范围内,则未指定存储的值。
operator-=
减去此 day
日期。
constexpr day& operator-=(const days& d) noexcept;
参数
d
要减去的天数。
返回值
*this
。 如果结果不在 [0, 255] 范围内,则未指定存储的值。
operator unsigned
获取 day
值。
explicit constexpr operator unsigned() const noexcept;
返回值
值 day
示例: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
另请参阅
<chrono>
month_day
类
month_day_last
类
year_month_day
year_month_day_last
头文件引用