os.time() 函数中的 isdst 字段有用吗?

使用 os.date("*t") 输出的结果包含了一个 isdst 字段,并且在 os.time 的输入时也可以指定。也许我太傻了,但我不认为 os.time 中使用了 isdst

> 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,都会得到相同的 Epoch 时间表示法。那么,是否可以安全地忽略此字段?

点赞
用户1009479
用户1009479

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})
2016-03-29 08:15:44