Pues veréis, tengo el siguiente problema:
Tengo una clase llamada Partido, donde entre otros campos almaceno en
forma de DateTime la fecha y hora a la que comienza, ahora me dispongo a
crear un método que imprima el minuto en el que se encuentra el partido
y tengo el siguiente problema ¿Cómo puedo hacer eso? Actualmente estoy
intentando hacer lo siguiente:
def minuto?
hora_actual = DateTime.now
tiempo_transcurrido = fecha - hora_actual
nil if tiempo_transcurrido < 0
end
Pero esa operación de resta me devuelve un número irracional y aún
mirando la api de ruby no me queda claro qué significa, ¿Alguien tiene
idea?
No habra que pasar primero el tiempo a segundos y luego realizar la
resta?
No sé, no tengo mucha idea. O tal vez las dos fechas que pretendes
restar no
son de formato DadaTime,…no sé
Un saludo
El 17 de septiembre de 2008 17:44, Carlos Belizón <
[email protected]> escribió:
Hola Carlos, dicho campo donde guardas la fecha y hora del inicio del
partido al ser mapeado por Rails es convertido a una instancia de la
clase
Time, asumiendo esto, puedes hacer algo asi:
#Time.current si estas en Rails 2.1, para que localize el tiempo si asi
lo
quieres.
t1 = Time.now
t2 = self.fecha
#Aqui obtienes el numero de segundos entre los 2 tiempos
time_diff = (t1 - t2).round
hours = time_diff / 3600
minutes = (diff / 3600) % 60
seconds = ((diff % 3600) % 60)
De esa manera creo que obtienes, ahora claro que esto lo puedes mejorar
y
tal vez convertirlo en metodos de clase Numeric pero eso ya es tarea
para la
casa ;).
Saludos!
mmm pues podria ser tan simple como minutos = DateTime.now.min -
fecha.min
pero hay muchos casos que le darian en la torre
por ejemplo si empieza a las 11:50 pm al cambiar de hora pues los min
pasarian a 0 otra vez
lo mismo con el dia, mes y año quizas mm habra que hacer algo mas
completo
para que
el resultado siempre sea valido.
ahorita = DateTime.now
( 60x60x24x365 )
quizas minActuales = ahorita.year * 31536000 + (ahorita.hour * 60 * 60)
+
(ahorita.min)
pero y en años bisiestos ?? y esos detalles ?
porque no mejor usamos la clase Time
ahorita = Time.now
horaGuardada = Time.parse( modelo.fecha.strftime(“%m/%d/%Y %H:%M:%S”) )
#transformar a Time
#siendo modelo.fecha de tipo DateTime
minutos_diferencia = ahorita - horaGuardada
y la magia esta hecha creo yo
El 17 de septiembre de 2008 10:53, Andrés gutiérrez
[email protected]escribió: