day

表示月份的一天。 例如,月份的第 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) 对后它的引用*thisday已递增(后缀递增)。
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
头文件引用