local Date = require('Module:Date')._Datelocal yesno = require('Module:Yesno')
local p =
local dateFormats =
function p.main(frame) return p._main(frame.args[1], frame.args[2], frame.args['force-year'], frame.args['format'] or "mdy" )end
function p._main(_dateA, _dateB, _forceYear, _format) -- mdy by default local dateFormat = dateFormats[_format] or "%B %-d" if _dateA
nil then error('Date A or B not provided.') elseif _dateA
nil then return Date(_dateB):text(dateFormat) end local dateA = Date(_dateA) local dateB = Date(_dateB) if dateA
nil then error("Either date A, date B, or both dates must be valid.") end local forceYear = yesno(_forceYear) -- Handle cases where one of the dates is not a valid date. if dateA
nil and dateA ~= nil then return dateA:text(dateFormat) .. (forceYear and (', ' .. dateA.year) or ) .. ' – ' .. _dateB end if dateA.year
dateB.month and dateA.day
dateB.month then return dateA:text(dateFormat) .. ' – ' .. dateB.day .. (forceYear and (', ' .. dateA.year) or ) else return dateA:text(dateFormat) .. ' – ' .. dateB:text(dateFormat) .. (forceYear and (', ' .. dateA.year) or ) end else -- Hide year if forced if forceYear
return p