Module:Datecalc
Documentation for this module may be created at Module:Datecalc/doc
-- <pre>Description: Wrapper/invocable for [[Module:Date]] -- Syntax : based on http://tieske.github.io/date/ Use YYYY-MM-DD if possible -- {{#invoke:Datecalc|main|funcname|date|arg1|arg2...}} -- Example: -- {{#invoke:Datecalc|main|diff|2013/12/10|2013/12/11}},{{#invoke:Datecalc|main|adddays|2013/12/10|5}} local p = {} local getArgs = require("Dev:Arguments").getArgs local gDate = require("Dev:Date") --% Entry point --@ frame (table) Scribunto frame --: (string) Results of date calculation function p.main(frame) return p._main(getArgs(frame)) end --% Entry point --@ args (table) Template arguments --: (string) Results of date calculation function p._main(args) local currentDate = os.date("%Y/%m/%d") local func = args[1] local tDateFuncs = {diff = 1, epoch = 1, isleapyear = 1} if not func then return end if tDateFuncs[func] then local arg2 = args[2] local arg3 = args[3] or currentDate if func == "diff" and arg2 and arg3 then return gDate[func](arg2, arg3):spandays() end return gDate[func](arg2) else currentDate = args[2] or currentDate local objDate = gDate(currentDate) local dateParams = {} if args[1] or args[2] then --Excludes function, date, leaves rest of parameters for i, v in ipairs(args) do if i > 2 then table.insert(dateParams, v) end end end return objDate[func](objDate, unpack(dateParams)) end end return p