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 ; }