首頁 > 後端開發 > C++ > 如何使用 C 11 的 std::chrono 解析日期字串並執行時間計算?

如何使用 C 11 的 std::chrono 解析日期字串並執行時間計算?

Patricia Arquette
發布: 2024-11-25 12:52:12
原創
814 人瀏覽過

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_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 提供對各個時間組件的存取:

  • duration .count()傳回時間單位的總數(秒乘以預設)
  • duration.seconds() 取得秒數
  • duration.mines() 取得分鐘
  • duration.hours() 取得小時
  • duration.days ()提供天

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板