54

次の形式の履歴日付文字列を考えてみましょう。

Thu Jan 9 12:35:34 2014

このような文字列をある種の C++ 日付表現に解析し、それから経過した時間を計算したいと考えています。

結果の期間から、秒、分、時間、および日の数にアクセスする必要があります。

これは、新しい C++11std::chrono名前空間で実行できますか? そうでない場合、今日はどうすればいいですか?

私は g++-4.8.1 を使用していますが、おそらく答えは C++11 仕様をターゲットにする必要があります。

4

4 に答える 4

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

バージョン 5 より前の GCC は を実装していませんstd::get_time。また、次のように記述できる必要があります。

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
于 2014-01-09T13:41:50.917 に答える