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
头文件引用