在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.date
和os.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小时。