Namespaces
Variants

std::chrono:: year_month_day_last

From cppreference.net
ヘッダーで定義 <chrono>
class year_month_day_last ;
(C++20以降)

year_month_day_last クラスは、特定の年と月の最終日を表します。これはフィールドベースの時間点であり、解像度は std::chrono::days で、月の最終日のみを表現できるという制限があります。

std::chrono::years および std::chrono::months を対象とした演算が直接サポートされています。 std::chrono::sys_days への暗黙的な変換により、 std::chrono::days を対象とした演算を効率的に実行できます。

year_month_day_last TriviallyCopyable StandardLayoutType です。

目次

メンバー関数

year_month_day_last オブジェクトを構築する
(public member function)
月数または年数分だけ時間点を変更する
(public member function)
このオブジェクトのフィールドにアクセスする
(public member function)
std::chrono::time_point に変換する
(public member function)
このオブジェクトが有効な日付を表しているかチェックする
(public member function)

非メンバー関数

2つの year_month_day_last 値を比較する
(関数)
year_month_day_last と年数または月数を加算または減算する
(関数)
(C++20)
year_month_day_last をストリームに出力する
(関数テンプレート)

ヘルパークラス

year_month_day_lastのフォーマットサポート year_month_day_last
(クラステンプレートの特殊化)
std::chrono::year_month_day_last のハッシュサポート
(クラステンプレートの特殊化)

#include <chrono>
#include <iostream>
int main()
{
    const auto ymd = std::chrono::year_month_day
    {
        std::chrono::floor<std::chrono::days>(std::chrono::system_clock::now())
    };
    const std::chrono::year_month_day_last ymdl
    {
        ymd.year(), ymd.month() / std::chrono::last
    };
    std::cout << "現在の月の最終日 (" << ymdl << ") は: "
              << std::chrono::year_month_day{ymdl}.day() << '\n';
    // 'last' オブジェクトは 'day' を配置できる場所であればどこにでも配置可能:
    using namespace std::chrono;
    constexpr std::chrono::year_month_day_last
        ymdl1 = 2023y / February / last,
        ymdl2 = last / February / 2023y,
        ymdl3 = February / last / 2023y;
    static_assert(ymdl1 == ymdl2 && ymdl2 == ymdl3);
}

出力例:

現在の月の最終日 (2023/Aug/last) は: 31

関連項目

特定の year month 、および day を表現する
(クラス)