os.time() 是否使用了 isdst 字段?

Is the isdst field used at all by os.time()?

os.date("*t") 的输出中有一个 isdst 字段,您可以在 os.time 的输入中指定它。也许我很愚蠢,但我根本看不到它被 os.time 使用:

> print(os.time{year=2016, month=3, day=29, hour=9,min=10,sec=10,isdst=1})
1459235410
> print(os.time{year=2016, month=3, day=29, hour=9,min=10,sec=10,isdst=0})
1459235410
> print(os.time{year=2016, month=6, day=29, hour=9,min=10,sec=10,isdst=0})
1467184210
> print(os.time{year=2016, month=6, day=29, hour=9,min=10,sec=10,isdst=1})
1467184210

无论您的 isdst 规格如何,您似乎都获得了相同的大纪元时间表示。那么,忽略这个字段是否安全?

isdst 字段是布尔值,不是数字。请注意,任何不是 falsenil 的内容都被认为是真实的,包括 0.

要将 isdst 设置为 false,请尝试

print(os.time{year=2016, month=6, day=29, hour=9, min=10, sec=10, isdst=false})

isdst 字段的默认值为 nil,因此这也适用:

print(os.time{year=2016, month=6, day=29, hour=9, min=10, sec=10})