Como Obtener Milisegundos en Ruby
En esta página:
Ruby es usado en proyectos geniales, como Twitter, Adidas Runtastic, Twitch, GitLab, etc. Puedes ver algunos de los otros proyectos que usan Ruby por medio del framework Ruby on Rails, en este enlace. En nuestras aplicaciones a veces necesitamos obtener información de las horas con sus minutos, segundos y milisegundos. En este Post nos enfocaremos en los milisegundos y te enseñaré a Como Obtener Milisegundos en Ruby, vamos con ello.
Antes de continuar te invito a leer los siguiente artículos:
- Que es Ruby y Otros Detalles
- Los métodos attr_* de Ruby
- Tipos de Operadores en Ruby (2.7.1) – Parte 1
- Como Crear Nuestro Primer Programa con Ruby – Parte 1
- Puedes leer más Posts en la categoría Ruby
Asimismo, te invito a escuchar el Podcast: “Dominio del trabajo con Varios Lenguajes de Programación” y “¿ Se Debe Escuchar Música Mientras Se Programa ?” (Anchor Podcast):
Spotify: | Sound Cloud: | Apple Podcasts | Anchor Podcasts |
Bien ahora continuemos con el Post: Como Obtener Milisegundos en Ruby.
En Ruby podemos obtener diferentes datos de la hora con el método strftime(). Exploraremos 3 escenarios en donde podemos obtener los milisegundos con el Lenguaje de Programación Ruby.
Mostrar Hora, Minutos, Segundos y Milisegundos
Podemos obtener la hora actual junto con sus minutos, segundos y milisegundos de la siguiente manera:
1 2 3 4 5 6 7 8 |
current_time = Time.now tiempo = current_time.strftime('%H:%M:%S.%L') print (tiempo) # Obtenemos 09:50:12.226 |
Puedes ver que al final del tiempo obtenido vemos que nos muestra el numero 226, esto son los milisegundos del tiempo actual.
Mostrar el Sistema de Tiempo Actual en Milisegundos
Podemos usar strftime(%s%L’), pero esta ves lo mostraremos como un String:
1 2 3 4 5 6 7 8 |
current_time = Time.now tiempo = current_time.strftime('%s%L') print (tiempo) # Obtenemos 1665499987552 |
También podemos hacer lo siguiente:
1 2 3 4 5 6 7 8 |
current_time = Time.now tiempo = (current_time.to_f * 1000).to_i print (tiempo) # Obtenemos 1665500082513 |
Este formato en string es utilizado para comparar tiempos, pero se suele usar la hora, minutos y segundos. Si le añadimos milisegundos, la precisión va ser mejor.
Mostrar el Tiempo Transcurrido en Milisegundos
Si estas usando el framework Ruby on Rails, puedes usar el método .in_milliseconds(). Si solo deseas la cantidad de milisegundos transcurridos desde Epoch, con Ruby puro, escribe:
1 2 3 4 5 6 7 8 9 |
DateTime.now.strftime("%Q") # Obtenemos 1643018771523 DateTime.now.strftime("%Q").to_i # Obtenemos 1643018771523 |
Si necesitas una diferencia entre dos tiempos, tendrás que escribir tu propio método:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def obtenerTiempotranscurrido(inicio, fin) (inicio - fin) * 1000.0 end tiempo_a = Time.now sleep(2) tiempo_b = Time.now tiempo_obtenido = obtenerTiempotranscurrido(tiempo_a, tiempo_b) print(tiempo_obtenido) # Obtenemos -2010.9697999999999 |
Si no te importa Monkey Patching, aquí hay otra manera:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Time def to_ms (self.to_f * 1000.0).to_i end end tiempo_a = Time.now sleep(2) tiempo_b = Time.now tiempo_transcurrido = tiempo_b.to_ms - tiempo_a.to_ms print(tiempo_transcurrido) # Obtenemos 2014 |
Recuerda que puedes usar la mayoría de los ejemplos mostrados en el framework Ruby on Rails u otro framework otro similar basado en Ruby, ya que al final estas herramientas se basan en el lenguaje de programación Ruby, valga la redundancia y por ende tienen soporte para este lenguaje de programación.
Conclusión
Hemos aprendido diferentes maneras de obtener los milisegundos de un tiempo actual con Ruby, es importante conocer que la precisión no puede ser exacta, pero al final son valores netos que pueden servir para realizar una comparación de tiempos con seguridad.
Nota(s)
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Ruby
- 10-10-2022
- 11-10-2022
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)