L'ora e la data sono componenti cruciali di molti software, dalle utilità di gestione del tempo alle applicazioni web. Come programmatore, devi sapere come manipolare l'ora e la data in qualsiasi lingua usi.
In Vai, il volta il pacchetto raggruppa le funzioni per la manipolazione dell'ora e della data. Puoi accedere a queste funzioni in qualsiasi file sorgente importando quel pacchetto.
Quindi, cosa significa manipolare l'ora e la data e come puoi manipolare l'ora e la data in Go?
Che cos'è la manipolazione di ora e data?
In base ai requisiti del tuo programma, potrebbe essere necessario controllare, gestire o regolare il comportamento o la rappresentazione di orari e date.
Linguaggi di programmazione diversi hanno le proprie funzioni per la manipolazione dell'ora e della data. Il linguaggio Go ha capacità estese, utili a questo scopo.
La manipolazione di ora e data può includere:
- Ottenere l'ora corrente di una posizione o fuso orario.
- Esecuzione di operazioni aritmetiche su orari e date.
- Modifica del formato di input/output di orari e date.
Per iniziare a manipolare l'ora e la data nelle tue applicazioni Go, importa il file volta pacchetto insieme agli altri pacchetti che stai utilizzando.
importare (
"fmt"
"volta"
)
Come ottenere l'ora e la data correnti in Go
Un caso d'uso comune per la manipolazione dell'ora è ottenere l'ora locale corrente o l'ora corrente di un fuso orario o luogo specifico.
Per ottenere l'ora e la data nella tua ora locale o in un fuso orario o in una posizione specifica, puoi utilizzare il volta. Adesso() e volta. Posizione di carico() funzioni:
funz principale(){
// Ottieni l'ora e la data correnti in Ora locale
myTime := io. Adesso()
fmt. Stampaln("Ora attuale ", mio tempo. Posizione(), " è: ", mio tempo)// Un altro modo per ottenere l'ora locale
luogo, _ := ora. Posizione di carico("Locale") // o ora. Posizione di carico("")
fmt. Stampaln("Ora attuale ", Posizione, " è: ", volta. Now().In (posizione))// un'altra posizione
luogo, _ = ora. Posizione di carico("America/New_York")
fmt. Stampaln("Ora attuale ", Posizione, " è: ", mio tempo. In (posizione))
// ottieni l'ora corrente in Mountain Time Zone (MST)
luogo, _ = ora. Posizione di carico("MST")
fmt. Stampaln("Ora attuale ", Posizione, " è: ", mio tempo. In (posizione))
}
Eseguire il programma sopra con vai a eseguire filename.go produce il seguente output nel terminale:
Il metodo LoadLocation non supporta tutte le abbreviazioni di località e fuso orario. Secondo il Vai alla documentazione, supporta solo posizioni in Banca dati IANA.org.
Come ottenere componenti separati da una data determinata
Puoi ottenere ogni componente del timestamp separatamente, che è simile a quando lavorare con l'ora e le date in JavaScript.
Ci sono molti modi per farlo usando Go's volta funzioni. Questa sezione illustra ciascun metodo.
Puoi usare il Data() funzione per ottenere il giorno, il mese e l'anno e il Orologio() funzione per ottenere l'ora, i minuti e i secondi. Per esempio:
funzprincipale() {
miaOra := ora. Adesso();
anno, mese, giorno := myTime. Data()
fmt. Println("Anno :", anno)
fmt. Println("Mese :", mese)
fmt. Println("Giorno :", giorno)
ora, min, sec := myTime. Orologio()
fmt. Println("Ora :", ora)
fmt. Println("Minuto :", min)
fmt. Println("Secondi :", sec)
}
L'output illustra le diverse parti del timestamp:
Puoi anche ottenere unità del timestamp individualmente con il volta funzioni per ciascuno di essi:
funzprincipale() {
miaOra := ora. Adesso()
// ottiene ogni unità da Anno a Nanosecondo
fmt. Println("Anno :", myTime. Anno())
fmt. Println("Mese :", myTime. Mese())
fmt. Println("Giorno :", myTime. Giorno())
fmt. Println("Ora :", myTime. Ora())
fmt. Println("Minuto :", myTime. Minuto())
fmt. Println("Secondi :", myTime. Secondo())
fmt. Println("Nanosecondo :", myTime. Nanosecondo())
}
Come illustra l'output, questo ti dà anche accesso ai nanosecondi:
Gli esempi fino a questo punto si sono concentrati sull'ottenimento di unità timestamp dall'ora corrente. Puoi eseguire lo stesso tipo di azione su un timestamp che non lo è volta. Adesso().
È possibile estrarre l'anno, il mese, il giorno, l'ora, i minuti ei secondi di una determinata data. Per fare ciò, devi inizializzare un nuovo oggetto data o analizzare la data da una stringa:
funzprincipale() {
// ottiene i singoli componenti del tempo da Anno a Nanosecondo
// da una data specifica
il tuo Tempo := tempo. Data(2020, 07, 1, 06, 32, 10, 0, volta. UTC)
fmt. Println("Anno :", la tuaOra. Anno())
fmt. Println("Mese :", il tuoOra. Mese())
fmt. Println("Giorno :", il tuoOra. Giorno())
fmt. Println("Ora :", il tuoOra. Ora())
fmt. Println("Minuto :", il tuo Tempo. Minuto())
fmt. Println("Secondi:", il tuo Tempo. Secondo())
fmt. Println("Nanosecondo :", il tuo Tempo. Nanosecondo())
// usando la funzione Clock() per ottenere ore, minuti e secondi
yourHour, yourMin, yourSec := yourTime. Orologio()
fmt. Println("Ora :", la tuaOra)
fmt. Println("Minuto :", tuoMin)
fmt. Println("Secondi :", tuoSec)
// ottiene l'ora e la data dalla stringa
dataString := "2020-07-0106:32:10"
disposizione := "2006-01-0215:04:05" // il formato di output desiderato
il tuo Tempo, _ = tempo. Analizza (layout, dateString)
fmt. Println("La tua ora è: ", la tua ora)
fmt. Println("Anno :", la tuaOra. Anno())
fmt. Println("Mese :", il tuoOra. Mese())
fmt. Println("Giorno :", il tuoOra. Giorno())
fmt. Println("Ora :", il tuoOra. Ora())
fmt. Println("Minuto :", il tuo Tempo. Minuto())
fmt. Println("Secondi:", il tuo Tempo. Secondo())
}
Questo codice produce il seguente output:
Nota che utilizza Parse() UTC per impostazione predefinita se non si specifica un fuso orario nella stringa della data.
Come eseguire operazioni aritmetiche con data e ora
Le operazioni aritmetiche sono un altro tipo di manipolazione che puoi eseguire su ora e data in Go. Sono tutte possibili operazioni semplici come addizione, sottrazione e differenza di tempo.
Vai ti permette di definire volta. Durata valori con tutte le unità di tempo da volta. Ora a volta. Nanosecondo. È possibile utilizzare questi valori per aggiungere o sottrarre tempo utilizzando Aggiungere(). C'è anche un Aggiungi data() funzione che accetta 3 parametri: anni, mesi e giorni per eseguire addizioni o sottrazioni.
Il codice seguente mostra l'uso di queste funzioni:
funzprincipale() {
curTime := tempo. Adesso()
curTime = curTime. Aggiungi (tempo. Ora) // aggiunge un'ora
fmt. Println("L'ora corrente è: ", curTime)
domani := curTime. Aggiungi (tempo. Ora * 24)
fmt. Println("Questa volta domani è: ", domani)
nextWeek := curTime. Aggiungi (tempo. Ora * 24 * 7)
fmt. Println("Questa volta la prossima settimana è: ", nextWeek)
// usando AddDate (y, m, d)
nextTomorrow := curTime. AddDate(0, 0, 2)
fmt. Println("Questa volta il prossimo domani è: ", nextTomorrow)
mese successivo := curTime. AddDate(0, 1, 0)
fmt. Println("Questa volta il prossimo mese è: ", nextMonth)
fiveYearsAndOneMonthAfter := curTime. AddDate(5, 1, 0)
fmt. Println("Questa volta cinque anni e un mese dopo è: ", fiveYearsAndOneMonthAfter)
}
Che produce il seguente output:
Puoi anche sottrarre il tempo con Aggiungere() e Aggiungi data() passando parametri negativi. Per esempio:
funzprincipale() {
curTime := tempo. Adesso()// sottrai un giorno usando AddDate()
ieri := curTime. AddDate(0, 0, -1)
fmt. Println("Questa volta ieri era: ", ieri)
// sottrai un mese usando Add()
ultimo mese := curTime. Aggiungi (tempo. Ora * -24 * 30)
fmt. Println("Questa volta il mese scorso era: ", lastMonth)
}
Produce questo output:
Anche se puoi usare Aggiungere() e Aggiungi data() per trovare la distinzione tra le date, Go ha a Sub() funzione che funziona in modo leggermente diverso:
funzprincipale() {
curTime = tempo. Adesso()
passato := tempo. Data(2022, volta. Dicembre, 25, 12, 0, 0, 0, volta. UTC)
diff := passato. Sub (curTime)
fmt. Println("La differenza tra ora e il passato è: ", diff)
// ottieni la differenza in varie unità
anni := int(diff. Ore() / 24 / 365)
fmt. Println("Anni: ", anni)
mesi := int(diff. Ore() / 24 / 30)
fmt. Println("Mesi: ", mesi)
giorni := int(diff. Ore() / 24)
fmt. Println("Giorni: ", giorni)
ore := int(diff. Ore())
fmt. Println("Ore: ", ore)
// diff. Minuti(), diff. Secondi(), diff. Millisecondi(), diff. Nanoseconds() restituisce anche le loro unità
}
Questo codice produce il seguente output:
Come ottenere l'ora e la data in vari formati
Puoi anche ottenere output di data e ora in più formati usando il file Formato() funzione. Ecco alcuni stili di formattazione comuni:
funzprincipale() {
curTime = tempo. Adesso()
// stili di formattazione standard incorporati
fmt. Println("L'ora corrente è: ", curTime)
fmt. Println("L'ora corrente nel formato RFC3339 è: ", curTime. Formato (ora. RFC3339))
fmt. Println("L'ora corrente nel formato RFC3339Nano è: ", curTime. Formato (ora. RFC3339Nano))
fmt. Println("L'ora corrente nel formato RFC1123 è: ", curTime. Formato (ora. RFC1123))
fmt. Println("L'ora corrente nel formato RFC1123Z è: ", curTime. Formato (ora. RFC1123Z))
fmt. Println("L'ora corrente nel formato RFC822 è: ", curTime. Formato (ora. RFC822))
fmt. Println("L'ora corrente nel formato RFC822Z è: ", curTime. Formato (ora. RFC822Z))
fmt. Println("L'ora corrente nel formato RFC850 è: ", curTime. Formato (ora. RFC850))
fmt. Println("L'ora corrente in formato ANSIC è: ", curTime. Formato (ora. ANSIC))
fmt. Println("L'ora corrente nel formato Unix è: ", curTime. Formato (ora. Data Unix))
// stili di formattazione personalizzati
// GG-MM-AAAA HH: MM: SS
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02-01-200615:04:05"))
// MM-GG-AAAA HH: MM: SS
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("01-02-200615:04:05"))
// AAAA-MM-GG HH: MM: SS
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("2006-01-0215:04:05"))
// GG.MM.AAAA
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02.01.2006"))
// GG/MM/AAAA
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02/01/2006"))
// 01 febbraio 2006
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02 gen 2006"))
// 01 febbraio 2006 lunedì
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02 febbraio 2006 Lunedi"))
// 01 febbraio 2006 lun 15:04:05
fmt. Println("L'ora corrente nel formato personalizzato è: ", curTime. Formato("02 febbraio 2006 lun 15:04:05"))
}
Questi diversi tipi di formattazione producono il seguente output:
Manipolazione di ora e data in Go
L'elenco delle manipolazioni che puoi eseguire su orari e date è quasi infinito. A seconda dell'ambito dell'applicazione, potrebbe essere necessario eseguire molte diverse operazioni di data/ora.
Per ogni caso d'uso che potresti avere, il volta il pacchetto è molto funzionale e ha molti metodi integrati.
È possibile utilizzare la manipolazione di data e ora per creare una semplice app di pianificazione giornaliera o di pianificazione delle attività.