2015-02-06 4 views
3

несоответствий Lua 5.1 док говорит: '!'Lua UTC время

Если формат начинается с, то дата форматируется в координированных Universal Time.

Если формат %c, ! 'поведение s кажется правильным

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

Если формат *t, !' поведение s кажется местами

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

Таблица вернулась к 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) 

Выход на моей машине (China Standard Time, 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 на моей машине.