如何使用Scribunto检测DST(夏令时是否激活)

根据当前日期,我如何知道 Lua 中的小时是否在夏令时。例如,在法国,实际值将为true(目前使用CEST),冬季将为false。不要考虑太专业,我只需要规则适用于法国。但是在这个时候,我不知道Lua是否有本地函数。可用内置函数列表在此处。

点赞
用户107090
用户107090

os.date("%Z") 返回 "CEST",如果你的系统正在使用中欧夏令时,这是法国目前正在使用的时间。在夏令时之外,它返回 "CET"

2013-09-26 01:59:48
用户1009479
用户1009479

使用someday = os.time { year = 2013, month = 6, day = 20 }返回的表格中,有一个名为isdst的字段表示是否为夏令时。

local someday = os.time{year=2013, month=6, day=20}
local t = os.date("*t", someday)
print(t.isdst)

获取当前时间更容易些,调用不带参数的os.time将返回当前日期和时间。

local now = os.time()
local t = os.date("*t", now)
print(t.isdst)
2013-09-26 02:45:35
用户204011
用户204011

除了其他两个回答(由@lhf和@Yu Hao)是正确的,还要注意正确处理时间是复杂的。如果我是你,我会考虑使用库来解决,例如Penlight。请注意,即使Penlight也不是完美的,但至少人们正在使用它,因此问题最终会得到修复。

2013-09-26 09:29:31