Un Time en Go es un tipo que describe un momento en el tiempo.
La información de fecha y hora se puede consultar, comparar y manipular a través de sus métodos, pero también hay algunas funciones que se llaman sobre el propio paquete time.
La fecha y la hora actuales se pueden obtener mediante la función time.Now.
La función time.Parse analiza strings y los convierte en valores de tipo Time.
Go tiene una forma especial de definir el formato que esperas para el análisis.
Debes escribir un ejemplo del formato usando los valores de esta marca de tiempo especial:
Mon Jan 2 15:04:05 -0700 MST 2006.
Por ejemplo:
import "time"
func parseTime() time.Time {
date := "Tue, 09/22/1995, 13:00"
layout := "Mon, 01/02/2006, 15:04"
t, err := time.Parse(layout,date) // time.Time, error
}
// => 1995-09-22 13:00:00 +0000 UTC
El método Time.Format() devuelve una representación de la hora en forma de string.
Igual que con la función Parse, el formato de destino se define también mediante un ejemplo que usa los valores de la marca de tiempo especial.
Por ejemplo:
import (
"fmt"
"time"
)
func main() {
t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
fmt.Println(formattedTime)
}
// => Fri, 09/22/1995, 13:00
Para un formato personalizado, usa una combinación de estas opciones. En Go también hay disponibles unas constantes de formato de fecha y marca de tiempo predefinidas.
| Tiempo | Opciones |
|---|---|
| Año | 2006 ; 06 |
| Mes | Jan ; January ; 01 ; 1 |
| Día | 02 ; 2 ; _2 (para el 0 inicial) |
| Día de la semana | Mon ; Monday |
| Hora | 15 ( formato de 24 horas ) ; 3 ; 03 (AM o PM) |
| Minuto | 04 ; 4 |
| Segundo | 05 ; 5 |
| Marca AM/PM | PM |
| Día del año | 002 ; __2 |
El tipo time.Time tiene varios métodos para acceder a una hora concreta. Por ejemplo, la hora: Time.Hour(), el mes: Time.Month().
Puedes encontrar más información sobre cómo funciona esto en la documentación oficial.
El paquete time incluye otro tipo, Duration, que representa el tiempo transcurrido, además de compatibilidad con ubicaciones y zonas horarias, temporizadores y otras funcionalidades relacionadas que se tratarán en otro concepto.
En este ejercicio vas a trabajar en un planificador de citas para un salón de belleza que abrió el 15 de septiembre de 2012.
Tienes cinco tareas, y todas ellas estarán relacionadas con fechas de citas.
Implementa la función Schedule para analizar una representación textual de la fecha de una cita y convertirla al formato time.Time correspondiente:
Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC
Implementa la función HasPassed, que recibe la fecha de una cita y comprueba si la cita tuvo lugar en algún momento del pasado:
HasPassed("July 25, 2019 13:45:00")
// => true
Implementa la función IsAfternoonAppointment, que recibe la fecha de una cita y comprueba si la cita es por la tarde (>= 12:00 y < 18:00):
IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true
Implementa la función Description, que recibe la fecha de una cita y devuelve una descripción de esa fecha y hora:
Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."
Implementa la función AnniversaryDate, que devuelve la fecha del aniversario de la apertura del salón para el año actual en UTC.
Suponiendo que el año actual es 2020:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
Nota: el valor devuelto es un time.Time y la hora del día no importa.
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.