Module:Date Stuff: Difference between revisions

no edit summary
No edit summary
No edit summary
Tag: Manual revert
 
(15 intermediate revisions by the same user not shown)
Line 38: Line 38:


--Takes a short form date and converts it to a long form, and marks if it is only a year, or a month and year
--Takes a short form date and converts it to a long form, and marks if it is only a year, or a month and year
function convertShortDate(date, calendar)
function convertShortDate(shortDate, calendar)
   --In place of a long if elseif, I've put all the months into a single variable, with each in its numerical place.
   --In place of a long if elseif, I've put all the months into a single variable, with each in its numerical place.
   --This also allows us to add other calendars here
   --This also allows us to add other calendars here
Line 53: Line 53:
   --Takes the provided variable and seperates it out into a table
   --Takes the provided variable and seperates it out into a table
   --Also marks if it is only a year or a month and year
   --Also marks if it is only a year or a month and year
   date = Split(date, "-")
   local shortDate = Split(shortDate, "-")
    
    
   if date[2] == nil then
   if shortDate[2] == nil then
     date = {nil, nil, nil, tonumber(date[1]), "year"}
     dateTable = {nil, nil, nil, tonumber(shortDate[1]), "year"}
   elseif date[3] == nil then
   elseif shortDate[3] == nil then
     date = {monthNames[tonumber(date[1])], tonumber(date[1]), nil, tonumber(date[2]), "month-year"}
     dateTable = {monthNames[tonumber(shortDate[1])], tonumber(shortDate[1]), nil, tonumber(shortDate[2]), "month-year"}
   else
   else
     date = {monthNames[tonumber(date[1])], tonumber(date[1]), tonumber(date[2]), tonumber(date[3]), "month-day-year"}
     dateTable = {monthNames[tonumber(shortDate[1])], tonumber(shortDate[1]), tonumber(shortDate[2]), tonumber(shortDate[3]), "month-day-year"}
   end
   end
   return date
   return dateTable
end
end


--Writes that date based on what is given.
--Writes that date based on what is given.
function writeDate(date)
function writeDate(dateTable)
   if date[5] == "year" then
   if dateTable[5] == "year" then
     return date[4]
     return dateTable[4]
   elseif date[5] == "month-year" then
   elseif dateTable[5] == "month-year" then
     return date[1].." ("..date[2]..") "..date[4]
     return dateTable[1].." ("..dateTable[2]..") "..dateTable[4]
   elseif date[4] == "month-day-year" then
   elseif dateTable[5] == "month-day-year" then
     return date[1].." ("..date[2]..") "..date[3]..", "..date[4]
     return dateTable[1].." ("..dateTable[2]..") "..dateTable[3]..", "..dateTable[4]
   end
   end
end
end
Line 84: Line 84:
--Calculates a persons age using the specified calendar
--Calculates a persons age using the specified calendar
function p._age(args)
function p._age(args)
   birthDate = convertShortDate(args[1], args[4])
   local birthDate = convertShortDate(args[1], args[4])
   secondDate = convertShortDate(args[2], args[4])
   local secondDate = convertShortDate(args[2], args[4])
   status = args[3]
   local status = args[3]
    
    
   --Checks which math formula to use, based on how much of the date there is.
   --Checks which math formula to use, based on how much of the date there is.
Line 101: Line 101:
       age = math.floor(secondDate[4] - birthDate[4])
       age = math.floor(secondDate[4] - birthDate[4])
     elseif birthDate[2] == secondDate[2] then
     elseif birthDate[2] == secondDate[2] then
       if birtDate[3] <= secondDate[3] then
       if birthDate[3] <= secondDate[3] then
         age = math.floor(secondDate[4] - birthDate[4])
         age = math.floor(secondDate[4] - birthDate[4])
       elseif birtDate[3] > secondDate[3] then
       elseif birthDate[3] > secondDate[3] then
         age = math.floor(secondDate[4] - birthDate[4] - 1)
         age = math.floor(secondDate[4] - birthDate[4] - 1)
       end
       end
Line 113: Line 113:
   --Determines if age or aged is required
   --Determines if age or aged is required
   if status == "alive" then
   if status == "alive" then
--    return writeDate(birthDate).." (age "..age..")"
    local longDate = writeDate(birthDate)
    return birthDate[1]
    return longDate.." (age "..age..")"
   elseif status == "dead" then
   elseif status == "dead" then
     return writeDate(secondDate).." (aged "..age..")"
     return writeDate(secondDate).." (aged "..age..")"