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

local p = {} local Fechas = require( 'Módulo:Fechas') local Romanos = require('Módulo:Números').Romano local enlace  local function enlazar(etiqueta)     if enlace == 'no' then         return etiqueta     else         return '[['.. etiqueta ..']]'     end end  function formatear(fechahora, opciones) 	if opciones['formatoFecha'] == 'timestamp' then 		return fechahora.time 	end 	     local etiqueta  = fechahora.label     local timestamp = fechahora.time     local precision = fechahora.precision          -- Decodificar el timestamp.     --if true then return timestamp end     local signo, annoSinSigno, mes, dia = timestamp:match("(%W)(%d+)%-(%d+)%-(%d+)")          annoSinSigno = tonumber(annoSinSigno)           -- Obtener la era     local era = ''          if signo == '-' then         era = ' a. C.'         annoConSigno = - annoSinSigno     elseif annoSinSigno == 0 then -- Por comprobar si aún es así.         annoSinSigno         = 1         annoConSigno = -1         era = ' a. C.'     else         annoConSigno = annoSinSigno     end          -- Informar el calendario     local calendario      local mostrarCalendario = ''          if fechahora.calendarmodel == 'http://www.wikidata.org/entity/Q1985786' then         calendario = 'juliano'         mostrarCalendario = '<sup>juliano</sup>'     else         calendario = 'gregoriano'     end      -- Informar el enlace utilizado en la función enlazar. OJO: No debe definirse como local     enlace    = opciones.enlace      if precision == 11 then      -- Fecha de la que se conoce el año, el mes y el día         if opciones['formatoFecha'] == 'año' then             return enlazar(annoSinSigno) .. mostrarCalendario .. era -- Devolver solo el año         else            return Fechas.Fecha({dia,mes,annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})         end     elseif precision == 10 then  -- Fecha de la que se conoce el año y el mes         if opciones['formatoFecha'] == 'año' then             return enlazar(annoSinSigno) .. mostrarCalendario .. era -- Devolver solo el año         else             return Fechas.Fecha({'',mes,annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})                 end     elseif precision == 9  then  -- Fecha de la que se conoce el año         return Fechas.Fecha({'','',annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})             elseif precision == 8  then  -- Fecha de la que se conoce la década         local decada = math.floor(annoSinSigno/10)*10         return enlazar('años '.. decada .. era) .. mostrarCalendario                 elseif precision == 7  then  -- Fecha de la que se conoce el siglo         --Ejemplos:          --   Eleno de Céspedes		+1600-00-00T00:00:00Z --> siglo XVI         --   Margarita Armand Ugón	+1901-00-00T00:00:00Z --> siglo XX         --   Aéropo I				-0700-01-01T00:00:00Z --> siglo VII a. C.         --   						-0600-01-01T00:00:00Z --> siglo VI a. C.         local siglo = Romanos(math.floor((annoSinSigno - 1)/100) + 1)                  if opciones['mayúscula'] == 'sí' then             return enlazar('Siglo ' .. siglo .. era)    .. mostrarCalendario         else             return enlazar('siglo ' .. siglo .. era)    .. mostrarCalendario                 end     elseif precision == 6  then  -- Fecha de la que se conoce el milenio         local milenio = Romanos(math.floor(annoSinSigno/1000))         return enlazar(milenio .. ' milenio'.. era).. mostrarCalendario     elseif precision == 5  then  -- Fecha de la que se conoce 10 000 años          local milenio =  Romanos(math.floor(annoSinSigno/1000))         return enlazar(milenio .. ' milenio'.. era)     elseif precision == 4  then  -- Fecha de la que se conoce 100 000 años            local milenio =  Romanos(math.floor(annoSinSigno/1000))         return enlazar(milenio.. ' milenio'.. era)            elseif precision == 3  then  -- Fecha de la que se conoce los millones de años         return math.floor(annoSinSigno/1000000) .. ' millones de años' .. era       elseif precision == 2  then  -- Fecha de la que se conoce los 10 millones de años         return math.floor(annoSinSigno/1000000) .. ' millones de años' .. era      elseif precision == 1  then  -- Fecha de la que se conoce los 100 millones de años         return math.floor(annoSinSigno/1000000) .. ' millones de años' .. era      else         return "<span class=error>Tipo de dato desconocido.</span>"             end     end  function p.FormateaFechaHora(fechahora, opciones, calificativos)     local idCircunstancia              if calificativos                          and        calificativos["P1480"]                 and -- circunstancias de la referencia        calificativos["P1480"][1]              and        calificativos["P1480"][1]['datavalue'] and        calificativos["P1480"][1]['datavalue']['value'] then                         idCircunstancia = calificativos["P1480"][1]['datavalue']['value']['numeric-id']                         if idCircunstancia == 5727902 then -- circa             return '[[:w:circa|c.]]&nbsp;' .. formatear(fechahora, opciones)         end     end          -- Valor por defecto si no se ha sabido formatear usando el calificativo     return formatear(fechahora, opciones) end  return p