c++ - 解析 ISO 8601 持续时间

标签 c++ iso8601

在 ISO 8601 中,持续时间以 P[n]Y[n]M[n]DT[n]H[n]M[n]S 格式给出。

示例:

20 秒:

PT20.0S

一年2个月3天4小时5分6秒:

P1Y2M3DT4H5M6S

问题:

给定一个包含 iso 8601 格式的持续时间的字符串。我想获得该持续时间的总秒数。标准 C++11 中推荐的实现方法是什么?

备注:

例如,boost DateTime 中的 ptime from_iso_string(std::string) 不适合此处。有没有类似的方法而无需手动执行正则表达式?

最佳答案

使用标准的正则表达式库,你想要的正则表达式是这样的:

"P\(\([0-9]+\)Y\)?\(\([0-9]+\)M\)?\(\([0-9]+\)D\)?T\(\([0-9]+\)H\)?\(\([0-9]+\)M\)?\(\([0-9]+\(\.[0-9]+\)?S\)?"

您可以从中提取年数、月数并计算总秒数。

关于c++ - 解析 ISO 8601 持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886140/

相关文章:

c++ - Visual Studio 2015 curl 不会静态链接

c++ - iconv编码转换问题

c++ - 线程 sleep VS 等待条件

php - 在 Laravel 中使用时区将默认数据库 DateFormat 设置为 ISO 8601

delphi - 是否有 Delphi RTL 函数可以将 ISO 8601 基本日期格式转换为 TDate?

C++:_popen 无限循环 (Windows)

c++ - 为什么获取成员函数指针值需要在类内部进行类名限定?

javascript - 将毫秒转换为 ISO 8601 持续时间

java - 将 UTC ISO 8601 字符串转换为毫秒给出 +12 小时的时间

jQuery 完整日历,所有事件显示为全天