Sumar y restar tiempo a fechas con Go

Go: sumar y restar tiempo a fecha

Hoy vamos a trabajar con fechas en Go. Te enseñaré a sumar y restar fechas con todo y horas, minutos y segundos de modo que podremos trabajar con horas o con fechas completas.

De este modo vamos a poder operar desde nanosegundos hasta milenios (teóricamente). Veamos cómo hacerlo usando las funciones de time.

Obteniendo la fecha en Go

Para poder sumar y restar fechas en Go debemos tener un objeto de tipo time.Time, ya sea a través de time.Now o parseando una fecha como cadena.

Es decir, si vas a operar con la fecha y hora actual entonces obtenla con time.Now. En caso de que quieras trabajar con fechas del futuro o del pasado, primero debes parsearlas con time.Parse.

En los ejemplos yo usaré la fecha y hora actual al momento de escribir el post en formato YYYY-MM-DDTHH:MM:SS en donde la T es una simple letra literal T (por ejemplo, 2021-10-21T22:12:53).

Por cierto, si no entiendes lo del formato te recomiendo leer el post de parsear las fechas con Go.

Sumar hora a una fecha

Ahora veamos cómo sumar fechas en Go. Veamos cómo sumarle una hora, por ejemplo. Para ello invocamos a Add pasándole el tiempo que se va a sumar.

En este caso como solo es una hora entonces multiplicamos time.Hour por 1. La multiplicación no es necesaria (ya que al multiplicar por 1, el resultado es el mismo) pero lo hago para que el código sea explicativo.

Como puedes ver, esto nos devuelve igualmente un time.Time al que podemos seguir agregando o restando tiempo.

Por cierto, también tenemos disponible time.Nanosecond, Microsecond, Millisecond, Second, Minute y Hour. Ya si quieres trabajar con días, semanas y meses debes hacer las multiplicaciones necesarias.

Sumar días

Por ejemplo veamos cómo trabajar con días. Solo hay que multiplicar la hora por 24, y luego multiplicar el resultado por el número de días (que en este caso serían 57):

Restar tiempo a una fecha en Go

Ya vimos cómo sumar tiempo a una fecha, ahora veamos cómo restar tiempo a una fecha en Go. Para ello simplemente hay que volver negativo el resultado, y seguir invocando a Add.

Es decir, es como sumar un número negativo; al hacerlo lo que realmente logras es una resta.

En este caso son dos días. Primero multiplicamos la hora por 48, y finalmente multiplicamos eso por -1 para hacerlo negativo.

Poniendo todo junto

Sumar y restar tiempo a fechas con Go
Sumar y restar tiempo a fechas con Go

El código completo que imprime los resultados queda así:

Obviamente puedes trabajar con cualquier precisión, desde Nanosegundos hasta miles de años. Y luego puedes formatear la fecha, extraer los meses, días, etcétera.

Todo es cuestión de adaptar el código para lo que necesites. Si quieres puedes probar el código en este enlace.

También te dejo con más tutoriales de Go por aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario