Tracks
/
Go
Go
/
Ejercicios
/
Reservas para el salón de belleza
Reservas para el salón de belleza

Reservas para el salón de belleza

Ejercicio de aprendizaje

Introducción

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

Opciones de formato

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.

Instrucciones

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.

1. Procesa la fecha de una cita

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

2. Verifica si una cita ya pasó

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

3. Verifica si la cita es por la tarde

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

4. Describe la hora y la fecha de la cita

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."

5. Devuelve la fecha del aniversario de la apertura del salón

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.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Go Exercism

¿Todo listo para empezar Reservas para el salón de belleza?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.