解析ISO 8601持续时间

Seb*_*anK 8 c++ iso8601

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

例子:

20秒:

PT20.0S
Run Code Online (Sandbox Code Playgroud)

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

P1Y2M3DT4H5M6S
Run Code Online (Sandbox Code Playgroud)

题:

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

备注:

例如,在boost DateTime中有ptime from_iso_string(std :: string),这里不适合.没有手工制作正则表达式有类似的方法吗?

Pau*_*ans 3

使用标准正则表达式库,您想要的正则表达式类似于:

"P\(\([0-9]+\)Y\)?\(\([0-9]+\)M\)?\(\([0-9]+\)D\)?T\(\([0-9]+\)H\)?\(\([0-9]+\)M\)?\(\([0-9]+\(\.[0-9]+\)?S\)?"
Run Code Online (Sandbox Code Playgroud)

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