Как определить летнее время (активно ли летнее время) с помощью scribunto

В соответствии с текущей датой, Как я мог знать, если это время в летнее время в Луа.

Например, значение во Франции будет фактически истинным (в настоящее время используется CEST). Зимой это было бы ложно.
Забудьте, это слишком конкретно: я просто жду правил для Франции. Но в этот момент я не мог знать, есть ли у Lua встроенная функция.

Список доступных встроенных функций находится здесь.

3 ответа

Стол, возвращенный os.date("*t", someday) имеет поле isdst представляя, если это летнее время.

local someday = os.time{year=2013, month=6, day=20}
local t = os.date("*t", someday)
print(t.isdst)

Узнать текущее время проще, позвонив os.time без аргументов вернет текущую дату и время.

local now = os.time()
local t = os.date("*t", now)
print(t.isdst)

os.date("%Z") возвращается "CEST" если ваша система использует центральноевропейское летнее время, то, что сейчас использует Франция. Вне летнего времени, это возвращается "CET",

В дополнение к двум другим ответам (от @lhf и @Yu Hao), которые правы, обратите внимание, что правильное обращение со временем является сложным. На вашем месте я бы подумал об использовании библиотеки, такой как Penlight. Обратите внимание, что даже Penlight не идеален, но, по крайней мере, люди его используют, так что проблемы со временем будут исправлены.

Другие вопросы по тегам