La documentación para este módulo puede ser creada en Módulo:Fechas/doc

local z = {}  local meses = {        'enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'}  function z.NombreDelMes(mes)   -- Función que devuelve el nombre del mes, donde mes es un número entre 1 y 12.    -- Si no es así se devuelve el valor de mes.   -- Por ejemplo, 2  --> febrero   --              02 --> febrero   --              abril --> abril   --              MAYO --> MAYO    return meses[tonumber(mes)] or mes end  function z.Fecha(frame)     -- Función que formatea una fecha     -- El único parámetro obligatorio es el año o 3.     -- Obtener los argumentos con los que se llama a la función      local argumentos = {}     local parent = {}     if frame == mw.getCurrentFrame() then         if   frame.args[3]  or frame.args["año"]  then     	    argumentos = frame.args         else      	    parent = frame:getParent()             argumentos = parent.args         end      else         argumentos = frame     end          local enlace = argumentos["enlace"] ~= "no"      -- Obtener el día, el nombre del mes y el año incluyendo para los años negativos a.d.     local dia = argumentos["día"] or argumentos[1] or ''         if dia ~='' then      	dia=tonumber(dia) or dia -- Eliminar ceros a la izquierda del día.     end     local mes = argumentos["mes"] or argumentos[2] or ''     if mes~='' then      	mes =meses[tonumber(mes)] or mes      end     local anyo=tonumber(argumentos["año"] or argumentos[3]) or 0     if anyo < 0 then     	anyo = -anyo .. ' a. C.'     end          local calendario = ''          if argumentos["calendario"] == 'juliano' then     	calendario = '<sup>[[:w:Calendario juliano|jul.]]</sup>'     end      -- Formatear la fecha dependiendo de si el día, el mes o el año están informados     if dia ~='' then     	if enlace then     	  return '[[' .. dia .. ' de ' .. mes .. ']] de [[' .. anyo .. ']]' .. calendario     	else     	  return dia .. ' de ' .. mes .. ' de ' .. anyo .. calendario     	end     elseif mes~='' then         if argumentos["mayúscula"] == 'sí' then             mes = mw.language.new('es'):ucfirst(mes)         end         if enlace then 	    return  '[[' .. mes .. ']] de [[' .. anyo .. ']]' 	else 	    return  mes .. ' de ' .. anyo 	end     elseif anyo ~= 0 then         if enlace then     	    return '[[' .. anyo .. ']]'     	else     	    return tostring(anyo)     	end      end  end  function getNumeroMes(nombreMes)      local numeroMes = ''      local nombreMeses = {      	 ['01'] = 'enero', ['02'] = 'febrero', ['03'] = 'marzo', ['04'] = 'abril', ['05'] = 'mayo', ['06'] = 'junio', ['07'] =  'julio', ['08'] =  'agosto',     	 ['09'] =  'septiembre', ['9'] =  'setiembre', ['10'] = 'octubre',  ['11'] =  'noviembre', ['12'] =  'diciembre'     	 }      for k, n in pairs(nombreMeses) do          if nombreMeses[k] == mw.ustring.lower(nombreMes) then              numeroMes = k          end      end      if numeroMes == nil or numeroMes == '' then          numeroMes = '00'       end      return numeroMes  end    function setString(cadena)      local dia, mes, anno      local error = '<strong class="error">Cadena de fecha no válida</strong>'      local valorDia = mw.ustring.gsub(cadena,'(%d+) de %a+ del? %d+.*','%1')      if valorDia == nil or valorDia == '' or mw.ustring.len(valorDia) > 2 or type(tonumber(valorDia)) ~= 'number' then           return error       else          dia = mw.ustring.format('%02d', tonumber(valorDia))      end      local valorMes = getNumeroMes(mw.ustring.gsub(cadena,'%d+ de (%a+) del? %d+.*','%1'))      if valorMes == '00' then         return error       else          mes = mw.ustring.format('%02d',tonumber(valorMes))      end      local valorAnno = mw.ustring.gsub(cadena,'%d+ de %a+ del? (%d+).*','%1')      if valorAnno == nil or valorAnno == '' or type(tonumber(valorAnno)) ~= 'number' then          return error      else         anno = mw.ustring.format('%04d',tonumber(valorAnno))      end      local newCadena = anno..mes..dia      return newCadena  end    function z.Numerica(frame)      return setString(frame.args[1])  end    return z