最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<chrono>

# std::chrono::year_month_weekday::operator sys_days(C++20)

    constexpr operator sys_days() const noexcept; // (1) C++20

## 概要

`year_month_weekday`オブジェクトをシステム時間の日付に、暗黙に型変換する。

この関数では、N回目の曜日のNは月内である必要はなく、N == 0の場合は「1週目の指定した曜日の7日前」を意味し、N > 0の場合は「1週目の指定した曜日から(N - 1) * 7日を加算した日付」を意味し任意にNを大きく指定できる。

## 戻り値

- `year().ok() && month().ok() && weekday().ok()`が`true`である場合、`year()/month()`の最初の`weekday()`の`(index() - 1) * 7`日後を表す`sys_days`を返す
- `index()`が`0`である場合、`year()/month()`の最初の`weekday()`の7日前の日付を表す`sys_days`を返す
- そうでない場合、未規定の値を返す

## 例

    #include <cassert>
    #include <chrono>

    namespace chrono = std::chrono;
    using namespace std::chrono_literals;

    int main()
    {
      chrono::sys_days date1 = 2020y/3/chrono::Sunday[1];
      assert(chrono::year_month_day{date1} == 2020y/3/1);

      chrono::sys_days date2 = 2020y/3/chrono::Sunday[2];
      assert(chrono::year_month_day{date2} == 2020y/3/8);

      chrono::sys_days date3 = 2020y/3/chrono::Sunday[0];
      assert(chrono::year_month_day{date3} == 2020y/2/23);

      chrono::sys_days date4 = 2020y/3/chrono::Sunday[10];
      assert(chrono::year_month_day{date4} == 2020y/5/3);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

- Clang: 8.0 ✅
- GCC: 11.1 ✅
- Visual C++: 2019 Update 3 ❌