Calcular fecha de manera regresiva en Ruby

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
ExpLin_11
Forista Nuevo
Forista Nuevo
Mensajes: 35
Registrado: Dom Nov 13, 2011 10:28 pm

Calcular fecha de manera regresiva en Ruby

Mensaje por ExpLin_11 »

Hola a todos.

Estoy tratando de hacer un programa, que dada dos fechas, calcule cual es la mas vieja y la mas nueva (parte que ya realice), y luego haga una cuenta regresiva de la fecha mas nueva a la mas vieja, mostrando toda la lista de fechas hasta llegar a la mas vieja.
Yo ya realice para otro programa una función que muestra la cantidad de años, meses y dias entre dos fechas, pero en este problema, si bien tengo que hacer algo parecido, aqui tengo que mostrar todas las fechas en un formato como por ejemplo: 20/2/2012, no la cantidad de años, meses y dias propiamente dicho.
Espero que se entienda, por ejemplo primero hice un programa que dadas 2 fechas tenia encontrar la mas vieja y la mas nueva:

http://pastebin.com/hQ5W1Tjj

luego hice uno, el cual hay que mostrar los años, meses y dias entre dos fechas (para ser mas preciso calcula la edad de la persona:

http://pastebin.com/pGBwP1wz

Ahora se que tengo que hacer algo parecido para hacer la cuenta regresiva, pero no se me ocurre como encararlo, o como modificar lo que hice anteriormente, dado que tengo que encontrar todas la fechas en cuestión y no mostrar los años, meses y dias.

Acepto cualquier sugerencia. Gracias.

Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Calcular fecha de manera regresiva en Ruby

Mensaje por Snark1994 »

Pienso que puedes mejorar su código para calcular la diferencia entre las dos fechas, pero para la lista puedes hacer esto (empiezo a la línea 87 en su primero código):

Código: Seleccionar todo

if (comparar_fecha(a1,a2,m1,m2,d1,d2) == 1) then
        puts "Fecha 1 es mas nueva que Fecha 2"
#cambiar de sitio las fechas
        a_temp = a1
        a1 = a2
        a2 = a_temp
        m_temp = m1
        m1 = m2
        m2 = m_temp
        d_temp = d1
        d1 = d2
        d2 = d_temp
elsif comparar_fecha(a1,a2,m1,m2,d1,d2) == -1
        puts "Fecha 2 es mas nueva que Fecha1"
end

#ahora, fecha 2 es la fecha más nueva
if comparar_fecha(a1,a2,m1,m2,d1,d2) == 0
        puts "Fecha 1 y fecha 2 son iguales"
else 
        begin
                begin
                        d2 -= 1
                        if (d2 <= 0) #¡se espera que no será nunca menos que 0!
                                d2 = 31 
                                m2 -= 1
                        end
                        if (m2 <= 0)
                                m2 = 12
                                a2 -= 1
                        end
                end until (fecha_correcta(d2,m2,a2)==true)
                puts d2.to_s+"/"+m2.to_s+"/"+a2.to_s
        end until (comparar_fecha(a1,a2,m1,m2,d1,d2) == 0)
end
Utiliza sus funciones de "comparar_fecha" (para probar si las fechas son iguales) y "fecha_correcta" (para incluir sólo las fechas correctas)

Espero que te he ayudado :)
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje