day
类
表示一个月中的某一天。 例如,一个月的第 25 天。
语法
class day; // C++20
备注
day
通常保留 [1,31] 范围内的值。 它可能会保留此范围之外的非负值,但如果值不在 [0,255] 范围内,则不指定该行为。
成员
名称 | 说明 |
---|---|
构造函数 | 构造 day 。 |
ok |
验证日期值是否位于有效范围 [1,31] 内。 |
operator++ |
递增此 day 。 |
operator+= |
向此 day 添加指定的天数。 |
operator-- |
递减 day 。 |
operator-= |
从此 day 减去指定的天数 |
operator unsigned |
获取日期值作为无符号整数。 |
非成员
“属性” | 描述 |
---|---|
from_stream |
使用指定格式从给定流分析 day 。 |
operator+ |
向此 day 添加指定的天数,返回新的 day 对象。 |
operator- |
从此 day 减去指定的天数,返回新的 day 对象。 |
operator== |
确定两个 day 实例是否相等。 |
operator<=> |
将此 day 与另一个 day 进行比较。 >, >=, <=, <, != 运算符由编译器合成。 |
operator<< |
将 day 输出到给定流。 |
operator""d |
创建 day 文本以表示一个月中的某一天。 |
要求
标头: <chrono>
(自C++20以来)
命名空间:std::chrono
编译器选项: /std:c++latest
构造函数
构造一个 day
。
1) day() = default;
2) explicit constexpr day(unsigned d) noexcept;
参数
d
构造 day
,其中值为 d
。
备注
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;
返回值
如果日期值在范围 [1,31] 内,则返回 true
。 否则为 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
day 的引用。
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
头文件引用