- Uso básico
El tipo time.Time representa un momento específico. Podemos obtener el objeto de tiempo actual con la función time.Now() y extraer información como año, mes, día, hora, minutos y segundos. Aquí hay un ejemplo:
package main
import (
"fmt"
"time"
)
func main() {
momentoActual := time.Now()
fmt.Println(momentoActual)
anio := momentoActual.Year()
mes := momentoActual.Month()
dia := momentoActual.Day()
hora := momentoActual.Hour()
minuto := momentoActual.Minute()
segundo := momentoActual.Second()
fmt.Printf("%v-%v-%v %v:%v:%v", anio, mes, dia, hora, minuto, segundo)
}
- Timestamps
Un timestamp es el número total de milisegundos desde el 1 de enero de 1970 (GMT). También se conoce como Unix Timestamp.
Para obtener el timestamp a partir de un objeto de tiempo:
package main
import (
"fmt"
"time"
)
func main() {
momentoActual := time.Now()
timestampSeg := momentoActual.Unix() // En segundos
timestampMiliseg := momentoActual.UnixMilli() // En milisegundos
timestampMicroseg := momentoActual.UnixMicro() // En microsegundos
timestampNanoseg := momentoActual.UnixNano() // En nanosegundos
fmt.Println(timestampSeg)
fmt.Println(timestampMiliseg)
fmt.Println(timestampMicroseg)
fmt.Println(timestampNanoseg)
}
Para convertir un timestamp a formato de tiempo:
package main
import (
"fmt"
"time"
)
func main() {
momentoActual := time.Now()
timestamp := momentoActual.Unix()
tiempoObjeto := time.Unix(timestamp, 0)
fmt.Println(tiempoObjeto)
anio := tiempoObjeto.Year()
mes := tiempoObjeto.Month()
dia := tiempoObjeto.Day()
hora := tiempoObjeto.Hour()
minuto := tiempoObjeto.Minute()
segundo := tiempoObjeto.Second()
fmt.Printf("%v-%v-%v %v:%v:%v", anio, mes, dia, hora, minuto, segundo)
}
- Duraciones
time.Duration es un tipo que representa el intervalo entre dos momentos en nanosegundos. Las constatnes definidas en el paquete time incluyen:
const (
Nanosecond time.Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)
- Operaciones de tiempo
4.1 Sumar tiempo
Para sumar una duración a un objeto de tiempo:
package main
import (
"fmt"
"time"
)
func main() {
momentoActual := time.Now()
nuevoMomento := momentoActual.Add(24 * time.Hour)
fmt.Println(nuevoMomento)
}
4.2 Restar tiempo
Para calcluar la diferencia entre dos objetos de tiempo:
package main
import (
"fmt"
"time"
)
func main() {
inicio := time.Now()
fin := time.Now()
diferencia := fin.Sub(inicio)
fmt.Println(diferencia)
}
4.3 Comparaciones
Para comparar si dos tiempos son iguales:
func (t time.Time) Equal(u time.Time) bool
Para verificar si un tiempo es anterior o posterior a otro:
func (t time.Time) Before(u time.Time) bool
func (t time.Time) After(u time.Time) bool
- Formateo de tiempo
El método Format permite formatear un objeto de tiempo según una plantilla específica:
package main
import (
"fmt"
"time"
)
func main() {
momentoActual := time.Now()
fmt.Println(momentoActual.Format("2006-01-02"))
fmt.Println(momentoActual.Format("2006年01月02日"))
fmt.Println(momentoActual.Format("2006-01-02 15:04:05"))
fmt.Println(momentoActual.Format("2006-01-02 03:04:05 PM"))
fmt.Println(momentoActual.Format("2006-01-02 15:04:05.0000"))
fmt.Println(momentoActual.Format("2006-01-02 15:04:05.9999"))
fmt.Println(momentoActual.Format("15:04:05"))
fmt.Println(momentoActual.Format("2006.01.02"))
}
- Conversión de cadenas a tiempo
Para convertir una cadena en un objeto de teimpo:
package main
import (
"fmt"
"time"
)
func main() {
tiempoStr := "2022-03-19 00:10:42.96"
formato := "2006-01-02 15:04:05.9999"
tiempoObjeto, err := time.Parse(formato, tiempoStr)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(tiempoObjeto)
}
- Zonas horarias
Para trabajar con zonas horarias específicas:
package main
import (
"fmt"
"time"
)
func main() {
zona, _ := time.LoadLocation("Asia/Shanghai")
tiempoShanghai := time.Date(2022, 3, 15, 20, 3, 4, 0, zona)
fmt.Println(tiempoShanghai)
}
- Dormir
Para hacer que un programa espere un período específico:
package main
import (
"time"
)
func main() {
time.Sleep(3 * time.Second)
}