En el post de hoy te enseñaré a convertir los segundos a una hora legible o a una cuenta regresiva usando el lenguaje de programación Go, de modo que vamos a convertir una cantidad de segundos a una representación de horas, minutos y segundos.
Por ejemplo, vamos a convertir la cantidad de 100
segundos a 00:01:40
ya que 100 segundos son 0 horas, un minuto y 40 segundos. Todo esto usando Go / Golang.
Segundos a cuenta regresiva
Para mostrar los segundos como un reloj, cronómetro o cuenta regresiva simplemente tenemos que extraer las horas enteras y los minutos enteros de los segundos. Los segundos que sobren serán los segundos de la representación final.
En el caso de las horas dividimos los segundos entre 60 y luego volvemos a dividirlo entre 60 (creo que es lo mismo que dividirlo entre 3600 pero dejemos esa optimización al compilador).
Una vez convertidas las horas, le restamos esa cantidad de segundos a los segundos totales. Luego hacemos lo mismo con los minutos: dividimos los segundos entre 60 y restamos esos segundos a los totales.
Función para horas, minutos y segundos en Go
Después de explicarte, te mostraré la función. Por cierto vamos a usar el truco de agregar ceros a la izquierda si es necesario. Queda así:
func segundosASegundosMinutosYHoras(segundos int) string {
horas := int(segundos / 60 / 60)
segundos -= horas * 60 * 60
minutos := int(segundos / 60)
segundos -= (minutos * 60)
return fmt.Sprintf("%02d:%02d:%02d", horas, minutos, segundos)
}
Como puedes ver es un método que recibe un entero y devuelve una cadena. Para usarlo simplemente invocamos a la función pasándole los segundos.
Puedes almacenar el resultado en una función o mostrar el resultado directamente tal y como lo he hecho yo:
func main() {
fmt.Println(segundosASegundosMinutosYHoras(10))
fmt.Println(segundosASegundosMinutosYHoras(100))
fmt.Println(segundosASegundosMinutosYHoras(1200))
fmt.Println(segundosASegundosMinutosYHoras(400))
}
Poniendo todo junto

El código completo junto con la forma de uso queda como se ve a continuación:
package main
import "fmt"
func segundosASegundosMinutosYHoras(segundos int) string {
horas := int(segundos / 60 / 60)
segundos -= horas * 60 * 60
minutos := int(segundos / 60)
segundos -= (minutos * 60)
return fmt.Sprintf("%02d:%02d:%02d", horas, minutos, segundos)
}
func main() {
fmt.Println(segundosASegundosMinutosYHoras(10))
fmt.Println(segundosASegundosMinutosYHoras(100))
fmt.Println(segundosASegundosMinutosYHoras(1200))
fmt.Println(segundosASegundosMinutosYHoras(400))
}
Por aquí te dejo más tutoriales de Go.