用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_clock::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 提供對各個時間組件的存取:
C 11支援
版本 5 之前的 GCC 不實作 std::get_time。但是,也可以使用 strptime 來替代:
std::tm tm = {}; strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
以上是如何使用 C 11 的 std::chrono 解析日期字串並執行時間計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!