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.