Namespaces
Variants

std::chrono::year_month_day:: year_month_day

From cppreference.net
year_month_day ( ) = default ;
(1) (C++20以降)
constexpr year_month_day ( const std:: chrono :: year & y,

const std:: chrono :: month & m,

const std:: chrono :: day & d ) noexcept ;
(2) (C++20以降)
constexpr year_month_day ( const std:: chrono :: year_month_day_last & ymdl ) noexcept ;
(3) (C++20以降)
constexpr year_month_day ( const std:: chrono :: sys_days & dp ) noexcept ;
(4) (C++20以降)
constexpr explicit year_month_day ( const std:: chrono :: local_days & dp ) noexcept ;
(5) (C++20以降)

year_month_day オブジェクトを構築します。

1) デフォルトコンストラクタは日付を未初期化のままにします。
2) year_month_day オブジェクトを構築し、年 y 、月 m 、日 d を格納します。
3) year_month_day オブジェクトを構築し、年 ymdl. year ( ) 、月 ymdl. month ( ) 、日 ymdl. day ( ) を格納します。
4) year_month_day オブジェクトを構築し、これは dp によって表される日付と同じ日付を表します。
5) year_month_day オブジェクトを構築し、これは dp によって表される日付と同じ日付を表します。これは、以下のようにして行われます: year_month_day ( sys_days ( dp. time_since_epoch ( ) ) )

コンストラクタ (3,4) は、それぞれ std::chrono::year_month_day_last および std::chrono::sys_days からの暗黙変換を定義します。

有効な日付を表す任意の year_month_day オブジェクト ymd ( ymd. ok ( ) == true ) について、 ymd sys_days に変換し、再度元に戻すと同じ値が得られます。

注記

year_month_day は、部分的な日付型である std::chrono::year_month std::chrono::month_day のいずれかを、欠落している要素(それぞれ日と年)と組み合わせることで作成することもできます。この組み合わせには operator / を使用します。

#include <chrono>
#include <iostream>
int main()
{
    using namespace std::chrono;
    constexpr auto ymd2 = std::chrono::year_month_day(
        2020y, std::chrono::January, 31d // オーバーロード (2)
    );
    std::cout << "ymd2: " << ymd2 << '\n';
    constexpr auto ymd3 = std::chrono::year_month_day(
        std::chrono::April / std::chrono::Monday[last] / 2023y // オーバーロード (3)
    );
    std::cout << "ymd3: " << ymd3 << '\n';
    const auto now = std::chrono::system_clock::now();
    const auto ymd4 = std::chrono::year_month_day(
        std::chrono::floor<std::chrono::days>(now) // オーバーロード (4)
    );
    std::cout << "ymd4: " << ymd4 << '\n';
}

出力例:

ymd2: 2020-01-31
ymd3: 2023-04-24
ymd4: 2023-08-30

関連項目

(C++20)
グレゴリオ暦の日付作成における従来の構文
(関数)