Module:Calendar date/recurring: Difference between revisions

Content deleted Content added
No edit summary
Replace Module:No globals with require( "strict" )
 
(12 intermediate revisions by 2 users not shown)
Line 10:
]]
 
require('Module:No globalsstrict')
 
local p = {}
 
function p.calculate(frame)
local pframeargs = frame:getParent().args
local args = pframe.args
 
local ONE_DAY = 86400 -- number of seconds in one day
local year = tonumber(args.year)
local month = tonumber(args.month)
local yearstrweeknumber = "year = " .. tonumber(args.yearweeknumber)
local dayofweek = tonumber(args.dayofweek)
return yearstr
 
local date = os.time{year=year, month=month, day=1}
local dateparts = os.date("*t", date)
if weeknumber > 0 then
-- find the first [dayofweek] of this month
while dateparts["wday"] ~= dayofweek do
date = date + ONE_DAY
dateparts = os.date("*t", date)
end
 
-- add the correct number of weeks
if weeknumber > 1 then
date = date + ((weeknumber - 1) * (7 * ONE_DAY))
end
else
-- find the first day of the next month
while dateparts["month"] == month do
date = date + ONE_DAY
dateparts = os.date("*t", date)
end
 
-- go back one day to get the last day of the month we want
date = date - ONE_DAY
dateparts = os.date("*t", date)
 
-- go backwards until we find the right day of week
while dateparts["wday"] ~= dayofweek do
date = date - ONE_DAY
dateparts = os.date("*t", date)
end
end
local result = os.date("%Y-%m-%d", date)
return yearstrresult
 
end