如何在Lua中将ISO 8601持续时间转换为秒或毫秒?

我需要实现一个将ISO 8601时间格式转换为秒或毫秒的lua函数,是否有任何内置库可用于Lua或者我们必须自己实现? ISO 8601格式的示例:

PT1S,PT0.010S,PT0.001S---> 转换为秒或毫秒。
点赞
用户107090
用户107090

下面的代码将字符串转换为 PTxxxS 格式:

s="PT0.001S"
print(tonumber(s:match("PT([%d.]+)S")))

更普遍地,这个代码将时间间隔字符串解析为一个表格,你可以很容易地对它进行处理:

s= "P3Y6M4DT12H30M5S"
t = {Y=0, M=0, W=0, D=0, H=0, M=0, S=0}
for v,k in s:gmatch("([%d.,]+)(%u)") do
    t[k]=tonumber(v)
end
2018-01-30 13:40:25