Как определить летнее время (активно ли летнее время) с помощью 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 не идеален, но, по крайней мере, люди его используют, так что проблемы со временем будут исправлены.