我在Lua中使用十进制时间,并对它们进行算术运算。 例如124500 + 5 = 124505(12:45:05) 什么公式可以避免60位数字的问题? 124459 + 5 = 124504(不是124464) 我该如何解决?
答案 0 :(得分:1)
您正在将地层与计算混合在一起。最好的方法是将您的时间“字符串”转换为实数:
12:45:05 -> 12 * 60 * 60 + 45 * 60 + 05 = 45905
该函数可能如下所示:
function time_to_number(t)
return (math.floor(t / 10000) * 60 * 60) + ((math.floor(t / 100) % 100) * 60) + (t % 100)
-- you can also use % 10000 if the hours are limited to two digits
end
现在您可以计算秒数了。
要格式化该值,可以使用此功能
function time_split(t)
local hour = math.floor(t / 3600)
local min = math.floor((t % 3600) / 60)
local sec = (t % 3600) % 60
return hour, min, sec
end
为了便于阅读,我使用了很多括号,但这并不是全部。