namespace std::chrono {
struct sys_info {
sys_seconds begin;
sys_seconds end;
seconds offset;
minutes save;
string abbrev;
};
}
概要
sys_info
は、システム時間に関するタイムゾーン情報の低レベルインタフェースを提供するクラスである。
このクラスの情報は、sys_time
からlocal_time
に変換する際に使用される。
メンバ変数
変数 | 説明 |
---|---|
begin , end |
関連するtime_zone 、time_point 、offset 、abbrev が[begin, end) の範囲内で有効であることを意味する。この情報を利用することで、タイムゾーン遷移を効率的にイテレートできる |
offset |
関連するtime_zone 、time_point に対して有効な、UTCタイムゾーンに対する差分時間を意味する。offset = local_time - sys_time の関係が成り立つ |
save |
このメンバ変数は、local_time とsys_time の間の変換では通常、必要にならない情報である。save != 0min の場合、そのsys_info は「サマータイム ("daylight saving" time)」にあると言われ、そのtime_zone がサマータイムから外れている場合に使用するオフセットとしてoffset - save を使用することを推奨する。ただし、この情報は信頼すべきものと見なすことは推奨しない。そのような情報を取得する唯一の確実な方法は、 save == 0min であるsys_info を返すtime_point でtime_zone を照会することである。time_point がそのようなsys_info を返す保証はないが、save != 0min のsys_info は、[begin, end) の範囲内にないことが保証される |
abbrev |
関連するtime_zone およびtime_point に使用される現在の「略称 (abbreviation)」を意味する。略称はタイムゾーンごとに一意に定まるわけではないため、略称からタイムゾーンおよびUTCタイムゾーンからのオフセット時間を確実にマッピングすることはできない |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator<< |
出力ストリームへの出力 | C++20 |
文字列フォーマット
名前 | 説明 | 対応バージョン |
---|---|---|
formatter |
std::formatter クラスの特殊化 |
C++20 |
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
auto now = chrono::system_clock::now();
// 日本のタイムゾーン
const chrono::time_zone* tz = chrono::locate_zone("Asia/Tokyo");
chrono::sys_info si = tz->get_info(now);
std::cout << chrono::floor<chrono::hours>(si.offset).count() << " hours" << std::endl; // UTCタイムゾーンからの差分時間
std::cout << si.abbrev << std::endl; // タイムゾーンの略称
}
出力
9 hours
JST
バージョン
言語
- C++20
処理系
- Clang: (9.0時点で実装なし)
- GCC: (9.2時点で実装なし)
- Visual C++: (2019 Update 3時点で実装なし)