如何在Lua中os.date()生成的日期中添加天数

  • 本文关键字:日期 添加 Lua os date lua
  • 更新时间 :
  • 英文 :


os模块中有一个名为date()的lua函数。调用os.date()将给出当前日期和时间,格式为:Tue Aug 10 13:04:17 2021.

这样做:os.date("%x")得到以下结果:08/10/21.

是否可以操作date函数以在当前返回的datetime/date中添加天数?类似于当您尝试使用.setDate()mutator向JavaScript日期添加天数时发生的情况。我已经看过如何在Lua中添加给定日期时间的天数,但这不是我想要实现的。

事先感谢您的协助。

使用os.time计算秒数:

t=os.time()
print(os.date("%c",t))
d=12
t=t+d*24*60*60
print(os.date("%c",t))

io.read()交互…

io.write('Input how many days should added>') print(os.date('%c',os.time({year=os.date('%Y'),month=os.date('%m'),day=tonumber(os.date('%d'))+tonumber(io.read()),hour=os.date('%H'),min=os.date('%M'),sec=os.date('%S')})))

一个负数也可以。
…还有365天后是哪一天;-)
…当然没有错误或异常处理(即没有输入,只按RETURN)
…即使float也会失败,数字必须是integer

Lua允许使用os.dateos.time的日期表表示。这很容易允许通过添加/减去年、月、日等来进行各种日期操作。

例如,下面显示了如何从日期中减去200天:

s1 = os.time()
x1 = os.date('*t',s1)
x1.day = x1.day - 200
x1.isdst = nil -- this prevents DST time changes
s2 = os.time(x1)
print(s1, os.date("%c", s1))
print(s2, os.date("%c", s2))
--[[ output
1690299117  Tue Jul 25 11:31:57 2023
1673022717  Fri Jan  6 11:31:57 2023
]]

从操作系统。在date文档中,您可以使用格式'*t'

获得表结果。
x1 = os.date('*t')
--[[ output:
x1 = {  year = 2023,  month = 7,  day = 25,
hour = 11,  min = 17,  sec = 22,
yday = 106,  wday = 1,  isdst = true }
]]

注意os.date返回isdst。这个值将被os.time使用,所以如果您不想增加/减少一个小时,您需要将其设置为nil,如上面的示例所示。

操作系统。时间文档说:

该表必须有年、月、日字段,也可以有小时(默认为12)、分钟(默认为0)、秒(默认为0)和isdst(默认为nil)字段。其他字段被忽略。

调用函数时,这些字段中的值不需要在其有效范围内。例如,如果sec为-10,则表示比其他字段指定的时间早10秒;当hour为1000时,表示比其他字段指定的时间晚1000小时。

最新更新