Diferencia entre revisiones de «Módulo:Fecha»

De Hispanopedia
Página creada con « return { _Date = Date, fecha = fecha }»
 
Supremo (discusión | contribs.)
m 4 revisiones importadas
 
(No se muestran 9 ediciones intermedias de 6 usuarios)
Línea 1: Línea 1:
local z = {}


return {
local meses = {
_Date = Date,
      'enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'}
fecha = fecha
 
}
function z.fechaActual()
local d = os.date('!*t')
local fecha = {}
fecha.anyo    = d.year
fecha.mes    = d.month
fecha.dia    = d.day
fecha.hora    = d.hour
fecha.minuto  = d.min
fecha.segundo = d.sec
return fecha
end
 
function validar(fecha)
fecha.anyo    = tonumber(fecha.anyo)
fecha.mes    = tonumber(fecha.mes)
fecha.dia    = tonumber(fecha.dia)
fecha.hora    = tonumber(fecha.hora)
fecha.minuto  = tonumber(fecha.minuto)
fecha.segundo = tonumber(fecha.segundo)
-- Falta validar que es una fecha válida
end
 
function z.edad(fecha1, fecha2)
--Función que devuelve la edad en años entre dos fechas
--Se supone que las fechas se han validado previamente.
if not fecha1 then
return -- falta devolver un error
end
if not fecha2 then
fecha2=z.fechaActual()
end
local anyos = fecha2.anyo - fecha1.anyo
-- El año 0 no existe, por lo que no se debe contar
if fecha1.anyo < 0 and fecha2.anyo > 0 then
anyos = anyos - 1
end
--if true then return require('Módulo:Tablas').tostring(fecha2) end
if fecha2.mes < fecha1.mes or
  (fecha2.mes == fecha1.mes and fecha2.dia < fecha1.dia) then
  anyos = anyos - 1
end
if anyos < 0 then
return -- falta devolver error
elseif anyos == 0 then
return 'menos de un año'
elseif anyos == 1 then
return 'un año'
else
return anyos .. ' años'
end
end
 
function z.llamadaDesdeUnaPlantilla(frame)
function obtenerFecha(dia, mes, anyo)
local resultado={}
if dia then
resultado.dia  = dia
resultado.mes  = mes
resultado.anyo = anyo
validar(resultado)
return resultado
end
end
 
local args = frame.args
local funcion = z[args[1]]
local fecha1  = obtenerFecha(args[2], args[3], args[4])
local fecha2  = obtenerFecha(args[5], args[6], args[7])
 
return funcion(fecha1, fecha2)
end
     
return z

Revisión actual - 10:49 25 oct 2023

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

local z = {}

local meses = {
       'enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'}

function z.fechaActual()
	local d = os.date('!*t')
	
	local fecha = {}
	fecha.anyo    = d.year
	fecha.mes     = d.month
	fecha.dia     = d.day
	fecha.hora    = d.hour
	fecha.minuto  = d.min
	fecha.segundo = d.sec
		
	return fecha
end

function validar(fecha)
	fecha.anyo    = tonumber(fecha.anyo)
	fecha.mes     = tonumber(fecha.mes)
	fecha.dia     = tonumber(fecha.dia)
	fecha.hora    = tonumber(fecha.hora)
	fecha.minuto  = tonumber(fecha.minuto)
	fecha.segundo = tonumber(fecha.segundo)
	
	-- Falta validar que es una fecha válida
end

function z.edad(fecha1, fecha2)
	--Función que devuelve la edad en años entre dos fechas
	
	--Se supone que las fechas se han validado previamente.
	
	if not fecha1 then
		return -- falta devolver un error
	end
	
	if not fecha2 then
		fecha2=z.fechaActual()
	end
	
	local anyos = fecha2.anyo - fecha1.anyo
	
	-- El año 0 no existe, por lo que no se debe contar
	if fecha1.anyo < 0 and fecha2.anyo > 0 then
		anyos = anyos - 1
	end
	
	--if true then return require('Módulo:Tablas').tostring(fecha2) end
	
	if fecha2.mes < fecha1.mes or
	   (fecha2.mes == fecha1.mes and fecha2.dia < fecha1.dia) then
	   	anyos = anyos - 1
	end
	
	if anyos < 0 then
		return -- falta devolver error
	elseif anyos == 0 then
		return 'menos de un año'
	elseif anyos == 1 then
		return 'un año'
	else
		return anyos .. ' años'
	end
end

function z.llamadaDesdeUnaPlantilla(frame)
	function obtenerFecha(dia, mes, anyo)
		local resultado={}
	
		if dia then
			resultado.dia  = dia
			resultado.mes  = mes
			resultado.anyo = anyo
			
			validar(resultado)
			
			return resultado
		end
	end

	local args = frame.args
	
	local funcion = z[args[1]]
	local fecha1  = obtenerFecha(args[2], args[3], args[4])
	local fecha2  = obtenerFecha(args[5], args[6], args[7])

	return funcion(fecha1, fecha2)
end
       
return z