| Contenidos de Wikipedia en español bajo licencia CC BY-SA 4.0 ⇔ Mapas de OpenStreetMap bajo licencia ODbL |
Módulo:Wikidata/Fecha
De Hispanopedia
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')
function p.FormateaFechaHora(frame)
local fechahora = frame.args[1]
local opciones = frame.args[2]
local etiqueta = fechahora.label
local timestamp = fechahora.time
local precision = fechahora.precision
local anno = string.sub(timestamp, 9, 12)
local calendario
if string.sub(timestamp,1,1) == '-' or anno == '0000' then
anno = '-' .. tostring(tonumber(anno) + 1)
end
local cifraAnno = tonumber(anno)
if fechahora.calendarmodel == 'http://www.wikidata.org/entity/Q1985786' then
calendario = 'juliano'
else
calendario = 'gragoriano'
end
-- Corregir el año. En Wikidata el 1 a. C. está grabado como año 0000, el 2 a. C.
-- como 0001 (junto al signo '-'), etc.
if precision == 11 or -- Fecha de la que se conoce el año, el mes y el día
precision == 10 or -- Fecha de la que se conoce el año y el mes
precision == 9 then -- Fecha de la que se conoce el año
local dia, mes, calendario
if precision >= 11 then
dia = string.sub(timestamp, 17, 18)
end
if precision >= 10 then
mes = string.sub(timestamp, 14, 15)
end
return Fechas.Fecha({dia,mes,anno;enlace=opciones.enlace;calendario=calendario})
elseif precision == 8 then -- Fecha de la que se conoce la década
return 'años '..anno
elseif precision == 7 then -- Fecha de la que se conoce el siglo
local siglo = Romanos((cifraAnno/100)+1)
return 'siglo ' .. siglo
elseif precision == 6 then -- Fecha de la que se conoce el milenio
return (cifraAnno/1000)+1 .. '.º milenio'
elseif precision == 3 then -- Fecha de la que se conoce el milenio
return (CifraAnno/1000)+1 .. '.º milenio'
else
return "<span class=error>Tipo de dato desconocido.</span>"
end
end
return p