Back and forth UTC dates in lua -
i'm having problems converting lua date timestamp , obtaining original date it. work non utc dates, not utc.
currently example code is:
local dt1 = os.date( "*t" ); print( dt1.hour ); local dt2 = os.date( "*t", os.time( dt1 ) ); print( dt2.hour ); print( "-=-=-" ); local dt1 = os.date( "!*t" ); print( dt1.hour ); local dt2 = os.date( "!*t", os.time( dt1 ) ); print( dt2.hour ); local dt2 = os.date( "*t", os.time( dt1 ) ); print( dt2.hour ); which yields output:
12 12 -=-=- 10 9 11 so, in second part, after obtaining timestamp using os.time( os.date( "!*t" ) ); don't know how obtain original date back. i'm doing wrong?
working "date tables" in lua
let dt "date table".
example, value returned os.date("*t") "date table".
how normalize "date table"
example, after adding 1.5 hours current time
local dt = os.date("*t"); dt.min = dt.min + 90
need normalize table fields.
function normalize_date_table(dt) return os.date("*t", os.time(dt)) end this function returns new date table equivalent argument dt regardless of meaning of content of dt: whether contains local or gmt time.
how convert unix time "local date table"
dt = os.date("*t", ux_time) how convert unix time "gmt date table"
dt = os.date("!*t", ux_time) how convert "local date table" unix time
ux_time = os.time(dt) how convert "gmt date table" unix time
-- conversion need precalculated value "zone_diff" local tmp_time = os.time() local d1 = os.date("*t", tmp_time) local d2 = os.date("!*t", tmp_time) d1.isdst = false local zone_diff = os.difftime(os.time(d1), os.time(d2)) -- zone_diff value may calculated once (at beginning of program) -- can perform conversion (dt -> ux_time): dt.sec = dt.sec + zone_diff ux_time = os.time(dt)
Comments
Post a Comment