Вы можете использовать пакет luarocks luatz
:
$ luarocks install luatz
тогда
> luatz = require("luatz")
> now = luatz.time()
> new_york = luatz.time_in('America/New_York', now)
> print(luatz.timetable.new_from_timestamp(new_york))
2019-03-25T16:19:43.696
> paris = luatz.time_in('Europe/Paris', now)
> print(luatz.timetable.new_from_timestamp(paris))
2019-03-25T21:19:43.696
Эта библиотека имеет ограниченные функции для возврата информации о самих часовых поясах:
> america_new_york = luatz.get_tz('America/New_York')
> for key,val in pairs(america_new_york:find_current(now)) do print(key,val) end
abbrind 4
isstd false
isdst true
isgmt false
gmtoff -14400
abbr EDT
> europe_paris = luatz.get_tz('Europe/Paris')
> for key,val in pairs(europe_paris:find_current(now)) do print(key,val) end
abbrind 17
isstd true
isdst false
isgmt true
gmtoff 3600
abbr CET
Чтобы запросить текущий часовой пояс системы, используйте luatz.get_tz()
без аргументов. Я не вижу способа получить имя часового пояса Олсона, но вы можете получить несколько бит данных
> now = luatz.time()
> mytz = luatz.get_tz()
> mytz_info = mytz:find_current(now)
> mytz_info.abbr
EDT
> mytz_info.gmtoff
-14400
> mytz_info.isdst
true