小时、分钟和秒的数学运算

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

点赞
用户8572843
用户8572843

你正在混淆形成和计算。最好的方法是将时间“字符串”转换为真正的数字:

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)
    -- 如果小时只有两位数,也可以使用 % 10000
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

为了提高可读性,我使用了许多括号,但并非所有括号都是必需的。

2018-08-21 13:16:16