Time 使用Lua将0秒格式化为00:00:00

Time 使用Lua将0秒格式化为00:00:00,time,lua,duration,Time,Lua,Duration,我试图将一个持续时间(以秒为单位)格式化为一个时间,我得到的结果表明我应该在某处解释一个历元。我希望os.date(“%X”,0)生成“00:00:00”,但它返回“20:00:00”以及日期值“12/31/69”(不过我不需要日历日期) 有没有一种标准的方法来获取一个持续时间字符串,该字符串使0秒产生一个表示总时间为0秒的时钟?我似乎在任何地方都找不到我想做的事情的例子 谢谢Lua没有庞大的标准库: string.format("%.2d:%.2d:%.2d", s/(60*60), s/60

我试图将一个持续时间(以秒为单位)格式化为一个时间,我得到的结果表明我应该在某处解释一个历元。我希望
os.date(“%X”,0)
生成“00:00:00”,但它返回“20:00:00”以及日期值“12/31/69”(不过我不需要日历日期)

有没有一种标准的方法来获取一个持续时间字符串,该字符串使0秒产生一个表示总时间为0秒的时钟?我似乎在任何地方都找不到我想做的事情的例子


谢谢

Lua没有庞大的标准库:

string.format("%.2d:%.2d:%.2d", s/(60*60), s/60%60, s%60)
在大多数系统(即POSIX)中,
os.date(“%X”,0)
提供了一个新纪元的时间,即1970年1月1日00:00:00(协调世界时,UTC)。 你得到20:00:00,因为你在不同的时区

要强制使用UTC而不是时区,请使用
开始格式化。这在报告中提到


因此,使用
os.date(“!%X”,0)
根据需要获取
00:00:00
。它可以在少于一天(86400)的任何秒数下工作。例如,
os.date(“!%X”,70)
给出了
00:01:10
:1分10秒。

在修复操作顺序后,这可以正常工作:s/(60*60)是的,抱歉,我没有测试它。我还错过了会议记录上的模数。
os.date
可以做到。看看我的答案。很诱人,但是。。。不会。有一半时间%d会对数字进行取整,这是不好的。例如,90个字母显示为“00:02:30”而不是“00:01:30”,这在Lua 5.3.x中不再有效,因为
%d
需要整数作为其输入。当然,您可以通过在
math.floor
中包装来解决这个问题。