Lua 转换时间字符串,如“0”;1d“;到秒
我目前正在寻找一种方法来获取用户输入并将其转换为秒。如果一个人/用户在下面键入以下任何输入(使用任何整数),那么它将返回该输入的第二个等价项 输入示例为:1y、1mth、1d、1h、1m、1sLua 转换时间字符串,如“0”;1d“;到秒,lua,Lua,我目前正在寻找一种方法来获取用户输入并将其转换为秒。如果一个人/用户在下面键入以下任何输入(使用任何整数),那么它将返回该输入的第二个等价项 输入示例为:1y、1mth、1d、1h、1m、1s 到目前为止,我已经尝试了多种方法,检查输入中的最后一个字母,等等。。遗憾的是,没有一个能完全符合我的要求。您的输入结构为(一个或多个ASCII数字)后跟(一个或多个ASCII字母)。您可以用^(%d+)(%a+)$来描述这一点: 现在你只需要做单位转换。每个单位的秒数表是一种非常明确的方法: lo
到目前为止,我已经尝试了多种方法,检查输入中的最后一个字母,等等。。遗憾的是,没有一个能完全符合我的要求。您的输入结构为(一个或多个ASCII数字)后跟(一个或多个ASCII字母)。您可以用
^(%d+)(%a+)$
来描述这一点:
现在你只需要做单位转换。每个单位的秒数表是一种非常明确的方法:
local SECONDS_PER = {
s = 1,
m = 60,
h = 60 * 60,
d = 24 * 60 * 60,
w = 7 * 24 * 60 * 60,
-- etc
}
if not SECONDS_PER[unit] then
return nil, "unknown unit `" .. unit .. "`"
end
return tonumber(count) * SECONDS_PER[unit]
end
我将首先编写一个函数,该函数接受字符串输入,找出它是哪一个,并返回适当的秒数。
local SECONDS_PER = {
s = 1,
m = 60,
h = 60 * 60,
d = 24 * 60 * 60,
w = 7 * 24 * 60 * 60,
-- etc
}
if not SECONDS_PER[unit] then
return nil, "unknown unit `" .. unit .. "`"
end
return tonumber(count) * SECONDS_PER[unit]
end