Track
/
Go
Go
/
Esercizi
/
Prenotazioni per la bellezza
Prenotazioni per la bellezza

Prenotazioni per la bellezza

Esercizio di apprendimento

Introduzione

Un Time in Go è un tipo che descrive un momento nel tempo. Le informazioni su data e ora si possono accedere, confrontare e manipolare tramite i suoi metodi, ma ci sono anche alcune funzioni richiamate direttamente sul pacchetto time. La data e l'ora attuali si possono ottenere tramite la funzione time.Now.

La funzione time.Parse esegue il parsing delle stringhe in valori di tipo Time. Go ha un modo tutto suo di definire il layout che ti aspetti per il parsing. Devi scrivere un esempio del layout usando i valori di questo timestamp speciale: Mon Jan 2 15:04:05 -0700 MST 2006.

Per esempio:

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

Il metodo Time.Format() restituisce una rappresentazione sotto forma di stringa del tempo. Proprio come con la funzione Parse, anche il layout di destinazione si definisce tramite un esempio che usa i valori del timestamp speciale.

Per esempio:

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

Opzioni del layout

Per un layout personalizzato, usa una combinazione di queste opzioni. In Go sono disponibili anche delle costanti di formattazione predefinite per date e timestamp.

Tempo Opzioni
Anno 2006 ; 06
Mese Jan ; January ; 01 ; 1
Giorno 02 ; 2 ; _2 (con lo 0 iniziale)
Giorno della settimana Mon ; Monday
Ora 15 ( formato orario a 24 ore ) ; 3 ; 03 (AM o PM)
Minuto 04 ; 4
Secondo 05 ; 5
Indicatore AM/PM PM
Giorno dell'anno 002 ; __2

Il tipo time.Time ha vari metodi per accedere a una particolare ora. Ad esempio Ora: Time.Hour(), Mese: Time.Month(). Per saperne di più su come funziona, consulta la documentazione ufficiale.

Il pacchetto time include un altro tipo, Duration, che rappresenta il tempo trascorso, oltre al supporto per località/fusi orari, timer e altre funzionalità correlate che saranno trattate in un altro concetto.

Istruzioni

In questo esercizio lavorerai a un sistema di pianificazione degli appuntamenti per un salone di bellezza che ha aperto il 15 settembre 2012.

Hai cinque attività, che riguarderanno tutte le date degli appuntamenti.

1. Analizzare la data di un appuntamento

Implementa la funzione Schedule che analizza una rappresentazione testuale della data di un appuntamento e la converte nel formato time.Time corrispondente:

Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC

2. Verificare se un appuntamento è già passato

Implementa la funzione HasPassed che riceve una data di appuntamento e verifica se l'appuntamento è ormai nel passato:

HasPassed("July 25, 2019 13:45:00")
// => true

3. Verificare se un appuntamento è nel pomeriggio

Implementa la funzione IsAfternoonAppointment che riceve una data di appuntamento e verifica se l'appuntamento cade nel pomeriggio (>= 12:00 e < 18:00):

IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true

4. Descrivere l'ora e la data dell'appuntamento

Implementa la funzione Description che riceve una data di appuntamento e restituisce una descrizione di quella data e di quell'ora:

Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."

5. Restituire la data dell'anniversario dell'apertura del salone

Implementa la funzione AnniversaryDate che restituisce la data dell'anniversario dell'apertura del salone per l'anno corrente in UTC.

Ipotizzando che l'anno corrente sia il 2020:

AnniversaryDate()

// => 2020-09-15 00:00:00 +0000 UTC

Nota: il valore restituito è un time.Time e l'ora del giorno non ha importanza.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Go Exercism

Vuoi iniziare Prenotazioni per la bellezza?

Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.