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

Convertir segundos a horas, minutos y segundos en Go

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.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto