2016-03-29 13 views
2

В результате вывода os.date("*t") в нем есть поле isdst, и вы можете указать его в своем вводе в os.time. Может быть, я глуп, но я не могу видеть, что это используется os.time вообще:Является ли поле isdst вообще используемым 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 

Вы, кажется, чтобы получить то же самое время Epoch представление независимо от спецификации isdst. Итак, можно ли игнорировать это поле?

ответ

3

Поле isdst является булевым, а не номером. Обратите внимание, что все, что не является false или nil считаются правдивыми, в том числе 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}) 
+0

Вот оно! Благодаря! Извините, Lua слишком новичок для меня, чтобы убрать предположения, к которым я привык. –