You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
807 B
Lua

local read_tzfile = require"luatz.tzfile".read_tzfile
local base_zoneinfo_path = "/usr/share/zoneinfo/"
local local_zoneinfo_path = "/etc/localtime"
local tz_cache = {}
local function name_to_zoneinfo_path(name)
if name == nil then
return local_zoneinfo_path
elseif name:sub(1, 1) == "/" then
return name
else
return base_zoneinfo_path .. name
end
end
local function clear_tz_cache(name)
tz_cache[name_to_zoneinfo_path(name)] = nil
end
local function get_tz(name)
local path = name_to_zoneinfo_path(name)
-- TODO: stat path
local tzinfo = tz_cache[path]
if tzinfo == nil then
tzinfo = read_tzfile(path)
tz_cache[path] = tzinfo
end
return tzinfo
end
return {
get_tz = get_tz,
clear_tz_cache = clear_tz_cache,
}