Módulo:Wikidata/Fecha

De Hispanopedia
Revisión del 13:58 25 ago 2014 de es>Miguillen (Página creada con «local p = {} local Fechas = require( 'Módulo:Fechas') local Romanos = require('Módulo:Números') function p.FormateaFechaHora(frame) local fechahora = frame.args[1] loc...»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

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