Saltar al contenido

¿Dividir un número en segundos en días, horas, minutos y segundos?

Solución:

Cuando haces una división entera, obtienes cociente y resto. Por ejemplo,

5 divided by 3 is quotient 1 with remainder 2.

En los lenguajes de programación, esto generalmente se expresa como:

5 / 3   # => 1
5 % 3   # => 2

La conversión que desea es solo una repetición de esto. Es más fácil comenzar desde la unidad inferior e ir más arriba.

Primero, tienes

  • 1307758473.484 seconds

Dado que 60 segundos son 1 minuto, y

1307758473.484 / 60 = 21795974  (intended to be integer division)
1307758473.484 % 60 = 33.484,

es lo mismo que

  • 21795974 minutes 33.484 seconds

Dado que 60 minutos son 1 hora, y

21795974 / 60 = 363266
21795974 % 60 = 14

es además lo mismo que

  • 363266 hours 14 minutes 33.484 seconds

Ahora, hay un poco de dificultad. La mayoría de los días son 24 horas. Cuando hay un segundo intercalar, no lo es. Si ignora los segundos intercalares y asume que 1 día son 24 horas, entonces, al hacer el cálculo,

363266 / 24 = 15136
363266 % 24 = 2

es además lo mismo que

  • 15136 days 2 hours 14 minutes 33.484 seconds.

Del mismo modo, la mayoría de los años son 365 días. Cuando hay un día bisiesto (año), no lo es. Si ignora los días bisiestos y supone que 1 año son 365 días, al hacer el cálculo,

15136 / 365 = 41
15136 % 365 = 171

es además lo mismo que

  • 41 years 171 days 2 hours 14 minutes 33.483 seconds

Modulus devuelve el resto al realizar la división de enteros.

Creo que es más fácil entender cómo usar Mod trabajando al revés a través de un problema primero.

Comencemos de manera simple con horas, minutos y segundos: 1 hora, 10 minutos y 30 segundos para ser precisos.

Primero, tienes 30 segundos. Esto es fácil, solo son 30. No hay duda. Ahora agregue minutos: para determinar los minutos como segundos, multiplíquelos por 60. Por lo tanto, 10 minutos y 30 segundos = 630 segundos.

Ahora vemos cómo funciona el mod, porque si dividir 630 por 60 obtienes 10.5 pero si ignoras la fracción (división entera) obtienes 10. El resto son los segundos.

Entonces, si MOD 630 entre 60, obtiene 30, el resto que queda al dividir 630 entre 30.

Entonces, para determinar los minutos y los segundos, divida por 60 para los minutos y mod por 60 para los segundos.

Ahora agregue una hora. Una hora = 60 minutos y 60 minutos son 60 * 60 segundos, por lo que 1 hora = 3600 segundos. 3600 + 600 + 30 = 4230 segundos.

4230/3600 (1 hora) = 1 – entonces tenemos una hora

4230% (mod) 3600 = 630 – toma esto y ahora procesamos por minutos.

Entonces, si profundiza esto más y agrega un día – 1 día = 24 horas = 24 * 3600 = 86400 86400 + 3600 + 600 + 30 = 90630

90630/86400 = 1 -> 1 día

90630% 86400 = 4230 -> segundos restantes

4230/3600 = 1 -> 1 hora

y repita la lógica anterior.

Espero que eso ayude a aclararlo: sigues repitiendo esa iteración más y puedes hacer semanas y años, pero los meses son especiales porque son irregulares, al igual que los años bisiestos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *