C 11 std::chrono を使用した日付文字列の解析
日付と時刻の情報を扱う場合、多くの場合、日付文字列を解析する必要があります。適切なデータ表現に変換します。 C 11 の場合、std::chrono 名前空間は、期間と時点を処理するための強力なツールを提供します。
日付文字列の解析
日付文字列を std に解析するには: :chrono、GCC は std::get_time 関数を提供します。 std::tm オブジェクトとフォーマット文字列を指定すると、std::get_time は入力文字列から日付と時刻のコンポーネントを抽出できます。次のコード スニペットは、これを示しています。
std::tm tm = {}; std::stringstream ss("Jan 9 2014 12:35:34"); ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
GCC バージョン 5 より前のバージョンでは、std::get_time が実装されていません。代わりに、strptime:
std::tm tm = {}; strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
経過時間の計算
std::tm オブジェクトで解析された日付と時刻を取得したら、を使用して time_point に変換できますstd::chrono::system_lock::from_time_t:
auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
この time_point は、現在のタイム ゾーンで解析された日付と時刻を表します。解析された日付からの経過時間を計算するには、解析された time_point から現在の time_point を減算します。
auto now = std::chrono::system_clock::now(); auto elapsed = now - tp;
Accessing Time Components
The std::chrono:: duration オブジェクトは、経過時間コンポーネントへのアクセスを提供します。秒、分、時間、および日数を取得するには、次の関数を使用します。
auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count(); auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count(); auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count(); auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();
これらの手法を利用すると、日付文字列を効果的に解析して std::chrono 時点に変換し、経過時間を計算できます。解析された日付からの時間を取得し、便利で効率的な方法で目的の時間コンポーネントにアクセスできるようにします。
以上がC 11 の std::chrono を使用して日付文字列を解析し、経過時間を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。