X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fdatetime.lua;h=301a49a5e9cd60035d4603919428f6192cd1058c;hb=0ef23c673d1d620c9c1cc3e8aed43add63634426;hp=e853ff785d49c81c14a31caeb00176b5198b4c63;hpb=2c3d5a2b9b18e731333be6d0c64c480cee465f43;p=prosody.git diff --git a/util/datetime.lua b/util/datetime.lua index e853ff78..301a49a5 100644 --- a/util/datetime.lua +++ b/util/datetime.lua @@ -41,13 +41,14 @@ function parse(s) local time_offset = os_difftime(os_time(os_date("*t")), os_time(os_date("!*t"))); -- to deal with local timezone local tzd_offset = 0; if tzd ~= "" and tzd ~= "Z" then - local sign, h, m = tzd:match("([+%-])(%d%d):(%d%d)"); + local sign, h, m = tzd:match("([+%-])(%d%d):?(%d*)"); if not sign then return; end + if #m ~= 2 then m = "0"; end h, m = tonumber(h), tonumber(m); tzd_offset = h * 60 * 60 + m * 60; if sign == "-" then tzd_offset = -tzd_offset; end end - sec = sec + time_offset + tzd_offset; + sec = (sec + time_offset) - tzd_offset; return os_time({year=year, month=month, day=day, hour=hour, min=min, sec=sec}); end end