如何在Lua中将本地时间转换为格式化字符串

5

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

我无法理解如何使用Lua的标准函数os.date()os.time()来实现这个目标。

2个回答

16

os.date是你要找的函数。它的第一个可选参数format可以实现你想要的功能:

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

来自Lua 5.3手册的os.date:

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

返回一个按照给定字符串格式格式化的日期和时间的字符串或表。

如果格式以'!'开头,则日期将按协调世界时格式化。

如果格式不是“*t”,则日期将按照与ISO C函数strftime相同的规则格式化为字符串。

你可以在这里了解有关C的strftime格式规则的更多信息。

如果由于任何原因您无法获得本地时间,您可以简单地添加所需的偏移量。

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

os.date('%Y-%m-%d %H:%M:%S') 是UTC时间。我需要本地时间。 - BruAPAHE
3
os.date函数返回系统本地时间,除非format!开头。如果它对您返回的是UTC时间,则可能有其他原因。您所在的平台是什么?系统时间和时区是否设置正确?您可以在此处查看Lua的os.time函数的实现:https://github.com/lua/lua/blob/d12262068d689eacc452a459a021df0ad8f6d46c/loslib.c#L293 - cfillion

0

2
如果您必须为该库提供偏移量,那么也可以使用带有偏移量的os.date()。 - Piglet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接