Lua中的四舍五入至5分钟间隔
我有一个字符串变量,我必须将其四舍五入到5分钟的间隔,但要将其保持为字符串,例如: 12:23应该是12:25 下午12:58应该是下午1:00 上午11:59应该是下午12:00。 我在lua试过这个,但不太好,我相信有更好的方法。也许有人可以指导我或者帮助我。以下是我所做的:Lua中的四舍五入至5分钟间隔,lua,Lua,我有一个字符串变量,我必须将其四舍五入到5分钟的间隔,但要将其保持为字符串,例如: 12:23应该是12:25 下午12:58应该是下午1:00 上午11:59应该是下午12:00。 我在lua试过这个,但不太好,我相信有更好的方法。也许有人可以指导我或者帮助我。以下是我所做的: startRoundH=string.sub(var,1,2) startRoundM1=string.sub(var,4,4) startRoundM2=string.sub(var,5,5)
startRoundH=string.sub(var,1,2)
startRoundM1=string.sub(var,4,4)
startRoundM2=string.sub(var,5,5)
startAMPM=string.lower(string.sub(var,6,7))
if(tonumber(startRoundM2))<=2 then startRoundM2="0"
elseif(tonumber(startRoundM2)>2 and tonumber(startRoundM2)<=7) then startRoundM2="5"
elseif (tonumber(startRoundM2)==8 or tonumber(startRoundM2)==9) then
startRoundM2="0"
if(tonumber(startRoundM1)~=5) then startRoundM1=tonumber(startRoundM1)+1
else
startRoundM1="0"
if(tonumber(startRoundH)<9) then startRoundH=tonumber(startRoundH)+1 startRoundH="0"..startRoundH
elseif(tonumber(startRoundH)==10 or tonumber(startRoundH)==9) then startRoundH=tonumber(startRoundH)+1
elseif (tonumber(startRoundH)==11) then
startRoundH="12"
if(startAMPM=="am") then startAMPM="pm" else startAMPM="am" end
elseif (tonumber(startRoundH)==12) then startRoundH="01" end
end
end
startRoundH=string.sub(变量1,2)
startRoundM1=string.sub(变量,4,4)
startRoundM2=string.sub(变量5,5)
startAMPM=string.lower(string.sub(var,6,7))
if(tonumber(startRoundM2))2和tonumber(startRoundM2)非常感谢你的回答:)我学到了一些新东西:)
local function round5min(var)
local h, m, ampm = var:match"^(%d+):(%d+)(%a+)$"
local t = (({am=0,pm=12})[ampm:lower()]+h%12)*60+m+2
t = t-t%5
m = t%60
t = (t-m)/60
h = t%12
return ("%d:%02d%s"):format((h-1)%12+1, m, ({"am","pm"})[(t-h)/12%2+1])
end
print(round5min("9:23am")) --> 9:25am
print(round5min("11:56am")) --> 11:55am
print(round5min("11:57am")) --> 11:55am
print(round5min("11:58am")) --> 12:00pm
print(round5min("11:59am")) --> 12:00pm
print(round5min("11:59pm")) --> 12:00am