2013-07-04 39 views
8

我試圖格式化一個持續時間(以秒爲單位)作爲一個時間,我得到的結果表明我應該考慮某個時代的時代。我預計os.date("%X", 0)產生「00:00:00」,但它返回「20:00:00」以及日期值「12/31/69」(但我不需要日曆日期)。使用Lua格式0秒爲00:00:00

有沒有一種標準的方式來獲得一個持續時間字符串,導致0秒產生一個時鐘,總共爲零秒?我似乎無法找到我想要做的任何地方的例子。

感謝

回答

16

在大多數系統中(即POSIX),os.date("%X",0)給你的時代,這是00:00:00的時間(世界協調時間,UTC),1970年1月1日。 由於您處於不同的時區,因此您得到20:00:00

要強制使用UTC而不是您的時區,請使用!開始格式。這在manual中提到。

因此,根據需要使用os.date("!%X",0)來得到00:00:00。它將以小於一天的任何秒數工作(86400)。例如,os.date("!%X",70)給出00:01:10:1分10秒。

5

Lua中沒有一個龐大的標準庫:

string.format("%.2d:%.2d:%.2d", s/(60*60), s/60%60, s%60) 
+2

固定操作順序後,它工作正常:s /(60 * 60) – Patillac

+0

是的,對不起,我沒有測試它。另外我錯過了分鐘的模數。 – mxcl

+2

'os.date'可以做到。看到我的答案。 – lhf