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.]] ' .. formatear(fechahora, opciones) end end -- Valor por defecto si no se ha sabido formatear usando el calificativo return formatear(fechahora, opciones) end return p