- chrono[meta header]
- std::chrono[meta namespace]
- class[meta id-type]
- cpp20[meta cpp]
namespace std::chrono {
struct sys_info {
sys_seconds begin;
sys_seconds end;
seconds offset;
minutes save;
string abbrev;
};
}- sys_seconds[link sys_time.md]
- string[link /reference/string/basic_string.md]
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; // タイムゾーンの略称
}- chrono::sys_info[color ff0000]
- chrono::time_zone[link time_zone.md]
- tz->get_info[link time_zone/get_info.md]
- chrono::locate_zone[link locate_zone.md]
- chrono::system_clock[link system_clock.md]
- now()[link system_clock/now.md]
- chrono::floor[link time_point/floor.md]
- count()[link /reference/chrono/duration/count.md]
9 hours
JST
- C++20
- Clang: 9.0 [mark noimpl]
- GCC: 9.2 [mark noimpl]
- Visual C++: 2019 Update 3 [mark noimpl]