带有小时,分钟和秒的数学运算

时间:2018-08-21 11:13:33

标签: lua

我在Lua中使用十进制时间,并对它们进行算术运算。 例如124500 + 5 = 124505(12:45:05) 什么公式可以避免60位数字的问题? 124459 + 5 = 124504(不是124464) 我该如何解决?

1 个答案:

答案 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

为了便于阅读,我使用了很多括号,但这并不是全部。