在 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/