Un Time en Go es un tipo que describe un momento en el tiempo.
Se puede acceder a la información de fecha y hora, compararla y manipularla a través de sus métodos, pero también hay algunas funciones que se llaman en el propio paquete time.
La fecha y hora actuales se pueden obtener con la función time.Now.
La función time.Parse convierte strings en valores de tipo Time.
Go tiene una forma especial de definir el formato que esperas para la conversión.
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 en string del tiempo.
Igual que con la función Parse, el formato de destino también se define 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 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 de AM/PM | PM |
| Día del año | 002 ; __2 |
El tipo time.Time tiene varios métodos para acceder a un momento concreto. Por ejemplo, hora: Time.Hour(), 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 verán en otro concepto.
En este ejercicio vas a trabajar en una aplicación para agendar citas de un salón de belleza que abrió el 15 de septiembre de 2012.
Tienes cinco tareas, y todas giran en torno a las fechas de las citas.
Implementa la función Schedule para procesar 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 verifica si la cita fue 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 verifica 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 esa 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 que se devuelve 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.