template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);
概要
システム時間からUTC時間に変換する。
戻り値
u.time_since_epoch() - t.time_since_epoch()
が1970年1月1日からの挿入されたうるう秒の合計と等しくなるようなutc_time
型オブジェクトu
を返す。t
がうるう秒が挿入されたちょうどその日付だえる場合、この変換ではうるう秒が挿入されたものとしてカウントされる。
例
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
// ここでは日付 (sys_days) から日付 (日単位のutc_time) に変換しているが、
// 日時 (sys_seconds) を渡せば日時 (utc_seconds) が返る。
// system_clock::time_pointを渡せば、それと同じ時間単位のutc_clockのtime_pointが返る
auto t = sys_days{July/1/2015};
auto u = utc_clock::from_sys(t); // 日単位のUTC時間が返る
auto leap_seconds = duration_cast<seconds>(u.time_since_epoch() - t.time_since_epoch());
std::cout << t << std::endl;
std::cout << u << std::endl;
std::cout << leap_seconds << std::endl;
}
出力
2015-01-01
2015-01-01 00:00:00 UTC
26
バージョン
言語
- C++20
処理系
- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌