Lua UTC时间不一致

时间:2015-02-06 01:25:43

标签: time lua utc

Lua 5.1 doc说:

  

如果格式以'!'开头,则日期格式为Coordinated   世界时。

如果格式为%c!的行为似乎正确

local date_1 = os.date("!%c")
local date_2 = os.date("%c")
print("utc date: "..date_1)
print("not utc date: "..date_2)

如果格式为*t,则!的行为似乎已被交换

local time_1 = os.time(os.date("!*t"))
local time_2 = os.time(os.date("*t"))
print("should be utc time, but is not: "..time_1) -- this should be UTC, and is not
print("should not be utc time, but is: "..time_2) -- this should not be UTC, but is

日期使用:http://www.epochconverter.com/

进行测试

为什么?

1 个答案:

答案 0 :(得分:1)

os.date("!*t")os.date("*t")返回的表格是正确的。我只打印hour字段。请注意,它们与%c格式一致:

local date_1 = os.date("!%c")
local date_2 = os.date("%c")
print("utc date: "..date_1)
print("not utc date: "..date_2)

print("utc date hour: " .. os.date("!*t").hour)
print("not utc date hour: " .. os.date("*t").hour)

我机器上的输出(中国标准时间,UTC + 08:00):

utc date: 02/06/15 02:02:29
not utc date: 02/06/15 10:02:29
utc date hour: 2
not utc date hour: 10

但是,os.time取表,假设它是本地时间,并返回纪元。因此,本地时间转换为真实时期,但utc时间不是。

print(os.time{year=1970, month=1, day=1, hour=8})

在我的机器上输出0