Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua中的四舍五入至5分钟间隔_Lua - Fatal编程技术网

Lua中的四舍五入至5分钟间隔

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)

我有一个字符串变量,我必须将其四舍五入到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)      
  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