Software / code / prosody
File
util/datetime.lua @ 13103:42c2a9787242
net.http.server: Remove "Firing event" logs, use event logging instead
Since these are noisy and we have the thing in util.helpers to log
events fired.
The new status line events are meant to replace these as they include
more useful info.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 14 May 2023 18:48:20 +0200 |
| parent | 12633:5d8b0e0b9d48 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- -- XEP-0082: XMPP Date and Time Profiles local os_date = os.date; local os_time = os.time; local os_difftime = os.difftime; local floor = math.floor; local tonumber = tonumber; local _ENV = nil; -- luacheck: std none local function date(t) return os_date("!%Y-%m-%d", t and floor(t) or nil); end local function datetime(t) if t == nil or t % 1 == 0 then return os_date("!%Y-%m-%dT%H:%M:%SZ", t); end local m = t % 1; local s = floor(t); return os_date("!%Y-%m-%dT%H:%M:%S.%%06dZ", s):format(floor(m * 1000000)); end local function time(t) if t == nil or t % 1 == 0 then return os_date("!%H:%M:%S", t); end local m = t % 1; local s = floor(t); return os_date("!%H:%M:%S.%%06d", s):format(floor(m * 1000000)); end local function legacy(t) return os_date("!%Y%m%dT%H:%M:%S", t and floor(t) or nil); end local function parse(s) if s then local year, month, day, hour, min, sec, tzd = s:match("^(%d%d%d%d)%-?(%d%d)%-?(%d%d)T(%d%d):(%d%d):(%d%d%.?%d*)([Z+%-]?.*)$"); if year then local now = os_time(); local time_offset = os_difftime(os_time(os_date("*t", now)), os_time(os_date("!*t", now))); -- to deal with local timezone local tzd_offset = 0; if tzd ~= "" and tzd ~= "Z" then 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 local prec = sec%1; sec = floor(sec + time_offset) - tzd_offset; return os_time({year=year, month=month, day=day, hour=hour, min=min, sec=sec, isdst=false})+prec; end end end return { date = date; datetime = datetime; time = time; legacy = legacy; parse = parse; };