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

履歴 編集

function
<chrono>

std::chrono::get_leap_second_info(C++20)

namespace std::chrono {
  template <class Duration>
  leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
}

概要

指定した日時までに挿入されたうるう秒の回数を取得する。

戻り値

戻り値型leap_second_infoの各メンバ変数は、以下の値が代入される:

メンバ変数 説明
is_leap_second ut自身がうるう秒であればtrue、そうでなければfalse
elapsed 1970年1月1日からutまでに正のうるう秒が挿入された合計 (秒数)。
合計にはutを含む

#include <iostream>
#include <chrono>

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

int main()
{
  std::cout << std::boolalpha;
  {
    chrono::utc_time now = chrono::utc_clock::now();
    chrono::leap_second_info info = chrono::get_leap_second_info(now);

    std::cout << info.is_leap_second << std::endl;
    std::cout << info.elapsed.count() << std::endl;
  }
  std::cout << std::endl;
  {
    // 2017年1月1日はうるう秒が挿入された日
    chrono::utc_time date = chrono::clock_cast<chrono::utc_clock>(chrono::sys_days{2017y/1/1});
    chrono::leap_second_info info = chrono::get_leap_second_info(date);

    std::cout << info.is_leap_second << std::endl;
    std::cout << info.elapsed.count() << std::endl;
  }
}

出力例

false
27

true
27

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

関連項目

参照