Module:Date: Difference between revisions

m
1 revision imported
m (1 revision imported)
m (1 revision imported)
 
(3 intermediate revisions by 2 users not shown)
Line 907: Line 907:
-- Return filled date1, date2 (two full dates).
-- Return filled date1, date2 (two full dates).
local function filled(a, b)
local function filled(a, b)
-- Return date a filled, if necessary, with month and/or day from date b.
-- The filled day is truncated to fit the number of days in the month.
local fillmonth, fillday
local fillmonth, fillday
if not a.month then
if not a.month then
Line 915: Line 917:
end
end
if fillmonth or fillday then  -- need to create a new date
if fillmonth or fillday then  -- need to create a new date
a = Date(a, { month = fillmonth, day = fillday })
a = Date(a, {
month = fillmonth,
day = math.min(fillday or a.day, days_in_month(a.year, fillmonth or a.month, a.calendar))
})
end
end
return a
return a
Line 1,396: Line 1,401:
end
end
local H, M, S = diff.hours, diff.minutes, diff.seconds
local H, M, S = diff.hours, diff.minutes, diff.seconds
if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' then
if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' or code == 'M' or code == 's' then
local days = floor(diff.age_days + extra_days)
local days = floor(diff.age_days + extra_days)
local inc_hour
local inc_hour
Line 1,411: Line 1,416:
inc_hour = true
inc_hour = true
end
end
end
elseif code == 'M' then
if S >= 30 then
M = M + 1
end
end
else
else
Line 1,437: Line 1,446:
elseif code == 'hm' then
elseif code == 'hm' then
return hours, M
return hours, M
elseif code == 'M' or code == 's' then
M = hours * 60 + M
if code == 'M' then
return M
end
return M * 60 + S
end
end
return hours, M, S
return hours, M, S