如何在Lua中以格式字符串获取本地时间

Bru*_*AHE 1 lua datetime-format

我需要一个格式为的日期时间字符串%Y-%m-%d %H:%M:%S

我不知道如何使用Lua的标准功能os.date()os.time()实现它。

cfi*_*ion 6

os.date是您要寻找的功能。它的第一个可选参数format可以满足您的要求:

os.date('%Y-%m-%d %H:%M:%S')
--> 2019-04-02 10:50:52
Run Code Online (Sandbox Code Playgroud)

从Lua 5.3手册上os.date

os.date ([format [, time]])

返回字符串或包含日期和时间的表,并根据给定的字符串格式设置其格式。

如果格式以“!”开头,则日期以“世界标准时间”格式化。

如果format不是“ * t”,则date以字符串形式返回日期,其格式与ISO C函数strftime相同。

您可以strftime 在此处了解有关C的格式规则的更多信息。

如果由于某种原因您没有当地时间,则可以简单地添加所需的偏移量。

local timeShift = 3 * 60 * 60  -- +3 hours
os.date('%Y-%m-%d %H:%M:%S', os.time() + timeShift)
--> 2019-04-02 18:24:15 for 15:24:15 UTC
Run Code Online (Sandbox Code Playgroud)

  • `os.date`给出系统的本地时间,除非`format`以`!`开头。它可能为您返回UTC的其他原因。您在哪个平台上,并且系统时间和时区设置正确?您可以在此处查看Lua的`os.time`的实现:https://github.com/lua/lua/blob/d12262068d689eacc452a459a021df0ad8f6d46c/loslib.c#L293 (3认同)