用 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中文网其他相关文章!