最終更新日時(UTC):
が更新

履歴 編集

class
<chrono>

std::chrono::day

namespace std::chrono {
  class day;
}

概要

dayは、特定の月に属するわけではない、日単体の値を表すカレンダー表現のためクラスである。

通常は値の範囲として[1, 31]を扱うが、このクラスではその範囲外の値として[0, 255]まで扱える。

このクラスは等値比較および大小比較ができ、EqualityComparableおよびLessThanComparableの要件を満たす。

このクラスは、トリビアルコピー可能で、かつスタンダードレイアウト型である。

備考

  • このクラスは時間間隔を表す型ではない。日の時間間隔はdaysである
  • 加算と減算は、monthweekdayと違い、[1, 31]の範囲では循環しない

メンバ関数

構築/コピー/破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++20
day& operator=(const day&) = default;
day& operator=(day&&) = default;
代入演算子 C++20

算術演算

名前 説明 対応バージョン
operator++ インクリメント C++20
operator-- デクリメント C++20
operator+= 加算の複合代入 C++20
operator-= 減算の複合代入 C++20

変換

名前 説明 対応バージョン
operator unsigned int unsigned int型への変換演算子 C++20

検証

名前 説明 対応バージョン
ok 値が範囲[1, 31]に収まっているか判定する C++20

非メンバ関数

算術演算

名前 説明 対応バージョン
operator+ 加算 C++20
operator- 減算 C++20

カレンダー構文演算子

名前 説明 対応バージョン
operator/ カレンダー要素同士をつなぎ合わせる C++20

比較演算

名前 説明 対応バージョン
operator== 等値比較を行う C++20
bool operator!=(const day&, const day&) noexcept; 非等値比較を行う (==により使用可能) C++20
operator<=> 三方比較を行う C++20
bool operator<(const day&, const day&) noexcept; 左辺が右辺より小さいかを判定する (<=>により使用可能) C++20
bool operator<=(const day&, const day&) noexcept; 左辺が右辺以下を判定する (<=>により使用可能) C++20
bool operator>(const day&, const day&) noexcept; 左辺が右辺より大きいかを判定する (<=>により使用可能) C++20
bool operator>=(const day&, const day&) noexcept; 左辺が右辺以上を判定する (<=>により使用可能) C++20

入出力

名前 説明 対応バージョン
operator<< 出力ストリームに出力する C++20
from_stream フォーマット指定して入力ストリームから入力する C++20

リテラル

名前 説明 対応バージョン
d 日リテラル C++20

文字列フォーマットサポート

名前 説明 対応バージョン
formatter std::formatterクラスの特殊化 C++20

ハッシュサポート

名前 説明 対応バージョン
template <class T> struct hash; hashクラスの先行宣言 C++26
template<> struct hash<chrono::day>; hashクラスのdayに対する特殊化 C++26

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;

int main() {
  chrono::day d{1};
  ++d;
  std::cout << d << std::endl;

  chrono::day e{15};
  e += chrono::days{3};
  std::cout << e << std::endl;

  using namespace std::chrono_literals;
  chrono::month_day date = 3/1d; // 年の情報をもたない「3月1日」
  std::cout << date << std::endl;
}

出力

02
18
Mar/01

バージョン

言語

  • C++20

処理系

  • Clang: 8.0 (入出力ストリームなし)
  • GCC: 9.2
  • Visual C++: 2019 Update 3

参照