Me preguntaba si hay un método incorporado en Ruby que me permita convertir tiempos de vuelta en el formato de hh: mm: ss. sss a milisegundos y viceversa. Como necesito hacer algunos cálculos con él, asumí que la conversión a milisegundos sería la forma más fácil de hacerlo. Dígame si me equivoco aquí :)Convertir duraciones en Ruby - hh: mm: ss.sss a milisegundos y viceversa
Respuesta
¿Qué tal esto?
a=[1, 1000, 60000, 3600000]*2
ms="01:45:36.180".split(/[:\.]/).map{|time| time.to_i*a.pop}.inject(&:+)
# => 6336180
t = "%02d" % (ms/a[3]).to_s << ":" <<
"%02d" % (ms % a[3]/a[2]).to_s << ":" <<
"%02d" % (ms % a[2]/a[1]).to_s << "." <<
"%03d" % (ms % a[1]).to_s
# => "01:45:36.180"
Como ignora la fecha en su totalidad, y posiblemente tenga números mayores a 24 como número de horas, tal vez las clases de Ruby existentes no sean adecuadas para usted (al menos las del estándar) lib).
En realidad, hay dos métodos que pueden ser útiles: time_to_day_fraction y day_fraction_to_time, pero por alguna razón son privados (al menos en 1.9.1).
Así que puedes mono-parchearlas hacerlos públicos, o simplemente copiar y pegar su aplicación a su código:
def time_to_day_fraction(h, min, s)
Rational(h * 3600 + min * 60 + s, 86400) # 4p
end
def day_fraction_to_time(fr)
ss, fr = fr.divmod(Rational(1, 86400)) # 4p
h, ss = ss.divmod(3600)
min, s = ss.divmod(60)
return h, min, s, fr
end
Están trabajando con Rational
clase, por lo que se puede calcular fácilmente con ellos.
Si agrego los milisegundos, esto debería funcionar. Lo probaré más tarde. Gracias :) – herrherr
Ya funciona con los milisegundos, solo pasas segundos como Float o Rational ('time_to_day_fraction (1,45,22.345)'). –
No funciona con un flotador, obtengo "un método indefinido' gcd '". – herrherr
Convert seconds into HH:MM:SS in Ruby
t = 323 # seconds
Time.at(t).utc.strftime("%H:%M:%S")
=> "00:03:56"
- 1. Cómo convertir HH: mm: ss.SSS a milisegundos?
- 2. Convertir TimeSpan de formato "hh: mm: ss" a "hh: mm"
- 3. ¿Cómo puedo convertir una indicación de fecha y hora de aaaa-MM-ddThh: mm: ss: formato SSSZ a MM/dd/aaaa hh: mm: ss.SSS? De ISO8601 a UTC
- 4. Convertir segundos enteros a HH: MM, iPhone
- 5. NSTimeInterval a HH: mm: ss?
- 6. Cómo convertir los segundos en este formato "HH: mm: ss"
- 7. ¿Convertir tiempo en formato HH: MM: SS a segundos solamente?
- 8. Cómo convertir la cadena HH: MM a Joda Duration?
- 9. Cómo convertir un decimal en tiempo, ej. HH: MM: SS
- 10. ¿Cómo convierto hh: mm: ss a hh: mm en SQL Server?
- 11. Formato de fecha en dd/mm/aaaa hh: mm: ss
- 12. Cómo convertir un número entero (tiempo) a HH: MM: SS :: 00 en SQL Server 2008?
- 13. Cómo convertir aaaa-MM-dd hh: mm: ss a "decimoquinto Abr 2010" usando PHP
- 14. C - Convertir time_t a cadena con formato AAAA-MM-DD HH: MM: SS
- 15. Convierta minutos enteros en Cadena "hh: mm"
- 16. ¿Cómo puedo convertir DateTime.now en C# para aaaa-mm-dd hh: mm: ss.sssssss?
- 17. TimeSpan ToString "[d.] Hh: mm"
- 18. Convertir milisegundos a NSDate
- 19. La salida está en segundos. convertir a formato hh: mm: ss en php
- 20. Convertir mm a píxeles
- 21. Cómo convertir la fecha en formato "AAAA-MM-DD hh: mm: ss" a UNIX marca de tiempo
- 22. PostgreSQL - Cómo convertir segundos en un campo numérico a HH: MM: SS
- 23. convertir fuente a cadena y viceversa
- 24. Java convertir int a hexadecimal y viceversa
- 25. Convertir 0 a 1 y viceversa
- 26. entidades convertir HTML a Unicode y viceversa
- 27. Programa para convertir el tiempo en segundos a formato hh: mm: ss
- 28. ¿Cómo convertir POJO a JSON y viceversa?
- 29. Convertir una imagen a base64 y viceversa
- 30. java.text.ParseException: Fecha unparseable: aaaa-MM-DD HH: MM: ss.SSSSSS
Qué cálculos que tiene que hacer? La clase Ruby 'DateTime' es bastante útil para la mayoría de los tipos de cálculos. –
Sumar y restar en general. Además de esto, estos tiempos están ligados a una cierta intensidad, por ejemplo: "02: 25.700 a una intensidad del 70%". Basado en este tiempo, necesitaría calcular el tiempo teórico al 100% de intensidad. En aras de la exhaustividad: estos tiempos no están limitados a una fecha determinada. – herrherr