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

时间:2018-01-30 13:12:20

标签: lua iso8601

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

PT1S, PT0.010S, PT0.001S---> to seconds or milliseconds.

1 个答案:

答案 0 :(得分:0)

以下代码转换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