为什么os.time中“hour”字段的默认值是12?

os.time 的表参数有三个必填字段 yearmonthday,还可以有字段 hour(默认为 12),min(默认为 0),sec(默认为 0)和 isdst(默认为 nil)。

hour 字段似乎有些奇怪,为什么默认值是 12 而不是像其他字段一样是 0 呢?

我也注意到它在Lua 5.2 手册中有说明,但在Lua 5.1 手册中没有,但是一个小测试表明它在两个版本中都是正确的。

print((os.time{year=2014, month=5, day=13}) - (os.time{year=2014, month=5, day=13, hour=0}))

输出:43200(12 * 60 * 60)

点赞
用户1009479
用户1009479

这里找到了由Roberto Ierusalimschy解释:

这是故意的。这甚至在PiL(第二版,第202页)中有记录(尽管没有在手册中记录)。我从未意识到'date'具有不同的默认值。(中午似乎比午夜更“内部”...)

2014-05-13 08:50:39