ホームページ >バックエンド開発 >C++ >C 11 の std::chrono を使用して日付文字列を解析し、時刻計算を実行するにはどうすればよいですか?

C 11 の std::chrono を使用して日付文字列を解析し、時刻計算を実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-25 12:52:12873ブラウズ

How Can I Parse Date Strings and Perform Time Calculations Using C  11's std::chrono?

C 11 の std::chrono を使用した日付文字列の解析

履歴日付文字列を扱う場合、多くの場合、それらを C 日付に解析する必要があります。さまざまな計算の表現。 C 11 の std::chrono 名前空間は、時間処理のための強力なツールを提供します。

日付文字列の解析

「Thu Jan 9 12」という形式の日付文字列を解析するには: 35:34 2014」、std::stringstream と std::get_time を活用できます。関数:

std::stringstream ss("Jan 9 2014 12:35:34");
std::tm tm = {};
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");

これは、文字列を std::tm 構造体に解析します。この構造体には、個々の時間コンポーネントが含まれます。

std::chrono::time_point

を表す std::chrono::time_point を取得するには解析された日付では、std::chrono::system_lock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));

経過時間の計算

を std::chrono::time_point で使用します。指定された履歴から経過時間を簡単に計算できますdate:

auto now = std::chrono::system_clock::now();
auto duration = now - tp;

時間コンポーネントへのアクセス

std::chrono::duration は、個々の時間コンポーネントへのアクセスを提供します:

    duration .count() は時間単位の合計数 (秒単位) を返します。デフォルト)
  • duration.秒() 秒を取得します
  • duration. minutes() 分を取得します
  • duration.hours() 時間を取得します
  • duration.days () は日数

C 11バージョン 5 より前のサポート

GCC は std::get_time を実装していません。ただし、strptime を使用する代替方法も利用できます:

以上がC 11 の std::chrono を使用して日付文字列を解析し、時刻計算を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。