Ottenere l'ora corrente
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 58 di 68.
Quando lavori con date e orari nei tuoi programmi Go, dovrai usare il pacchetto time integrato in Go. Questo pacchetto fornisce tutte le funzionalità necessarie per lavorare con operazioni relative al tempo.
Il punto di partenza più comune è ottenere l'ora corrente. Go semplifica questa operazione con la funzione time.Now():
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}La funzione time.Now() restituisce un oggetto time.Time che rappresenta il momento attuale. Quando stampi questo oggetto, mostra la data e l’ora in un formato leggibile, incluse le informazioni sul fuso orario.
Questo oggetto time.Time contiene tutte le informazioni su quel momento specifico: anno, mese, giorno, ora, minuti, secondi e persino nanosecondi. Lo userai come base per tutte le altre operazioni temporali in Go.
Sfida
FacileCrea un'applicazione per il monitoraggio del tempo che acquisisca l'ora corrente e la visualizzi in più formati. Questa sfida metterà alla prova la tua capacità di usare la funzione time.Now() e di lavorare con oggetti time.Time per estrarre diversi componenti del momento corrente.
Riceverai un input:
- Una stringa contenente richieste di formato di visualizzazione separate da virgole, nel formato
"format1,format2,format3"(ad esempio,"full,date,time,year,month,day")
Il tuo compito è:
- Usare
time.Now()per acquisire l'ora corrente e memorizzarla in una variabile - Visualizzare l'intestazione dell'applicazione:
"=== TIME TRACKER APPLICATION ===" - Visualizzare la conferma dell'acquisizione del timestamp:
"Current time captured successfully" - Analizzare l'input dividendolo in corrispondenza delle virgole per ottenere le singole richieste di formato
- Visualizzare l'intestazione dei formati:
"Displaying time in requested formats:" - Per ogni richiesta di formato, visualizzare le informazioni sull'ora in base al formato specificato:
- Per
"full": visualizzare"Full timestamp: [complete_time_object]" - Per
"date": visualizzare"Date only: [year]-[month]-[day]"(usare i componenti del metodo Date()) - Per
"time": visualizzare"Time only: [hour]:[minute]:[second]"(usare i metodi Hour(), Minute(), Second()) - Per
"year": visualizzare"Year: [year_value]"(usare il metodo Year()) - Per
"month": visualizzare"Month: [month_name]"(usare il metodo Month()) - Per
"day": visualizzare"Day: [day_value]"(usare il metodo Day()) - Per
"weekday": visualizzare"Weekday: [weekday_name]"(usare il metodo Weekday()) - Per
"unix": visualizzare"Unix timestamp: [unix_seconds]"(usare il metodo Unix())
- Per
- Contare e visualizzare le statistiche:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Visualizzare ulteriori dettagli sull'ora:
"Additional time details:""- Nanoseconds: [nanosecond_value]"(usare il metodo Nanosecond())"- Location: [timezone_location]"(usare il metodo Location())"- Is zero time: [true_or_false]"(usare il metodo IsZero())
- Visualizzare il messaggio di completamento:
"Time tracking completed - all requested formats processed"
Usa il pacchetto time per lavorare con gli oggetti ora, il pacchetto strings per dividere la stringa di input e il pacchetto fmt per formattare l'output. Ricorda che time.Now() restituisce un oggetto time.Time che contiene tutte le informazioni sul momento corrente e che puoi estrarre componenti specifici usando i vari metodi disponibili su questo oggetto. Questa sfida mostra come acquisire l'ora corrente ed estrarre diverse informazioni da un singolo oggetto time.Time.
Provalo tu
package main
import (
"fmt"
"strings"
"time"
)
func main() {
// Leggi l'input
var formatRequests string
fmt.Scanln(&formatRequests)
// Usa un orario fisso per ottenere un output coerente (l'orario di riferimento di Go)
// Invece di time.Now(), usa time.Date per ottenere risultati prevedibili
currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
// Suddividi le richieste di formato
formats := strings.Split(formatRequests, ",")
// TODO: Scrivi il tuo codice qui sotto
// Mostra l'intestazione dell'applicazione
// Mostra la conferma dell'acquisizione del timestamp
// Mostra l'intestazione dei formati
// Elabora ogni richiesta di formato e mostra il risultato corrispondente
// Usa una map per tenere traccia dei componenti univoci da contare
// Usa la formattazione appropriata (ad es., %02d per i numeri con zeri iniziali)
// Mostra le statistiche riepilogative
// Mostra ulteriori dettagli sull'ora
// Mostra il messaggio di completamento
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività7Gestione degli errori in dettaglio
Tipi di errore personalizzatiAvvolgere gli errori con `%w`Rimuovere il wrapping con `errors.Is`Rimuovere il wrapping con `errors.As`Capire `panic`Usare `recover`Riepilogo - Divisione sicura10Lavorare con il tempo
Ottenere l'ora correnteCreare un orario specificoFormattare l'oraAnalizzare stringhe di tempoDurata temporaleOperazioni aritmetiche con il tempoSospensioni e tickerRiepilogo - Timer semplice2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamentiEsercitati da solo: Compilatore Go online