]>
git.madduck.net Git - etc/awesome.git/blobdiff - luatz/tzinfo.lua
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
local gettime = require "luatz.gettime".gettime
local gettime = require "luatz.gettime".gettime
+local timetable_mt = require "luatz.timetable".timetable_mt
+
+local function to_timestamp ( o )
+ if type ( o ) == "number" then
+ return o
+ elseif getmetatable ( o ) == timetable_mt then
+ return o:timestamp ( )
+ end
+end
local tz_info_methods = { }
local tz_info_mt = {
__index = tz_info_methods ;
}
local tz_info_methods = { }
local tz_info_mt = {
__index = tz_info_methods ;
}
+local tt_info_mt = {
+ __tostring = function ( self )
+ return string.format ( "tt_info:%s=%d" , self.abbr , self.gmtoff )
+ end ;
+}
-- Binary search
local function _find_current ( tzinfo , target , i , j )
-- Binary search
local function _find_current ( tzinfo , target , i , j )
end
function tz_info_methods:find_current ( current )
end
function tz_info_methods:find_current ( current )
+ current = assert ( to_timestamp ( current ) , "invalid timestamp to :find_current" )
return self [ _find_current ( self , current , 0 , #self ) ].info
end
return self [ _find_current ( self , current , 0 , #self ) ].info
end
-function tz_info_methods:localiz e ( utc_ts )
+function tz_info_methods:localis e ( utc_ts )
utc_ts = utc_ts or gettime ( )
return utc_ts + self:find_current ( utc_ts ).gmtoff
end
utc_ts = utc_ts or gettime ( )
return utc_ts + self:find_current ( utc_ts ).gmtoff
end
+tz_info_methods.localize = tz_info_methods.localise
function tz_info_methods:utctime ( ts_local )
function tz_info_methods:utctime ( ts_local )
+ ts_local = assert ( to_timestamp ( ts_local ) , "invalid timestamp to :utctime" )
local tz1 , tz2 = find_current_local ( self , ts_local )
tz1 = self [ tz1 ].info
if tz2 == nil then
local tz1 , tz2 = find_current_local ( self , ts_local )
tz1 = self [ tz1 ].info
if tz2 == nil then
return {
tz_info_mt = tz_info_mt ;
return {
tz_info_mt = tz_info_mt ;
+ tt_info_mt = tt_info_mt ;