local_info
構造体
local_time
を sys_time
に変換した結果についてのタイム ゾーン情報への低レベルのインターフェイスを提供します。
構文
struct local_info;
メンバー
関数 | 説明 |
---|---|
result |
変換の結果を記述するコード。 |
first , second |
変換の結果。 |
メンバー定数
名前 | 値 | 説明 |
---|---|---|
unique |
0 | 変換の結果は一意です。 |
nonexistent |
1 | local_time を変換するための対応する sys_time は存在しません。 |
ambiguous |
2 | 変換の結果があいまいです。 |
非メンバー
関数 | 説明 |
---|---|
operator<< |
local_info をストリームに出力します。 |
result
local_time
を sys_time
に変換した結果。
int result;
戻り値
結果は次のいずれかの値になる場合があります。
unique
:local_time
がsys_time
に正常に変換されました。nonexistent
:local_time
からsys_time
へのマッピングは存在しません。ambiguous
:local_time
が夏時間と標準時間の間の切り替え中になるため、2 つのsys_time
値に変換される場合があります。
解説
first
と second
を result
に基づいて設定する方法については、first
、second
に関する次のセクションを参照してください。
first
, second
local_time
を sys_time
に変換した結果を提供します。
sys_seconds begin;
sys_seconds end;
戻り値
first
と second
は、次のように result
に基づいて設定されます。
result |
first |
second |
---|---|---|
unique |
sys_time に変換された local_time の値を格納します |
ゼロ初期化 |
nonexistent |
local_time の直前に終了する sys_info |
local_time の直後から始まる sys_info 。 |
ambiguous |
local_time の直後に終了する sys_info |
local_time の直前に開始する sys_info 。 |
ambiguous
結果コード
秋の夏時間から標準時への移行中に、時計は基本的に 1 時間余分に進みます。 これは、標準時への移行によって 1 時間が失われるように思われるため、混乱を招く可能性があります。 1 時間戻すことにより、移行前の時間は、時計が標準時に調整された後に繰り返されます。 ニューヨークでの標準時への変更について考えてみましょう。これは 11 月の最初の日曜日の午前 2 時に発生します。 まず、午前 1 時が過ぎます。 午前 2 時に時計は標準時に移行するため、もう一度午前 1 時になります。 つまり、午前 1 時から午前 2 時までの時間は繰り返され、事実上 1 時間が加算されます。 例については、「ambiguous_local_time
」を参照してください。
local_time
がこの "追加分の" 1 時間の時間を指定した場合、変換方法は明確ではありません。 変換された時刻を、1 回目に発生した "最初の" 時間または "2 回目" の時間のどちらとして扱う必要があるでしょうか。 列挙型 choose
を指定してどちらにするかが指定されていない場合は、result
が ambiguous
に設定され、local_time
が変換される可能性のある 2 つの選択肢が first
と second
に反映されると予測します。
nonexistent
結果コード
春の標準時間から夏時間への移行中、時計は基本的に 1 時間を失います。 これは、夏時間への移行によって 1 時間増えるように思われるため、混乱を招く可能性があります。 "夏時間への切り替え" で 1 時間進めることで、移行後の 1 時間は実質的に削除されます。 ニューヨークで夏時間を変更することについて考えます。これは、3 月の第 2 日曜日に午前 2 時に行われます。 午前 2 時に、時計は夏時間に移行し、午前 3 時 00 分になります。 たとえば、変換される local_time
が午前 2 時 30 分の場合、その時間は "削除" された期間に含まれるので、result
に nonexistent
コードが含まれると予測されます。 例については、「nonexistent_local_time
」を参照してください。
例: local_info
の取得
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());
auto localInfo = currentZone->get_info(lt);
std::cout << "local_time: " << lt << "\n";
std::cout << localInfo << "\n";
return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)
要件
ヘッダー: <chrono>
名前空間: std::chrono
コンパイラ オプション: /std:c++latest
<chrono>
ambiguous_local_time
の例外
choose
列挙型
file_clock
クラス
high_resolution_clock
local_t
構造体
non_existent
の例外
system_clock
構造体
tai_clock
クラス
utc_clock
クラス
ヘッダー ファイル リファレンス