Analizza la stringa della data in Go
L’analisi della data è una delle attività più comuni riscontrate nel mondo della programmazione. Go utilizza una data standard, a differenza di altri linguaggi di programmazione che utilizzano codici per rappresentare parti di una rappresentazione di stringa di data / ora. L’analisi in Go viene eseguita con l’aiuto delle funzioni Parse
e Format
nel pacchetto time
.
Rappresentazione di data e ora in Go
Per analizzare la data in Go, usiamo qualcosa chiamato layout
. C’è un tempo standard in Go che dobbiamo ricordare durante l’analisi delle date in Go:
Mon Jan 2 15:04:05 MST 2006
È il 2 gennaio, 15:04:05 del 2006, UTC-0700
.
Analizza la stringa della data in Go
Per analizzare una stringa di data, passiamo questo layout alla funzione time.Parse
. Usiamo il tempo reale come formato senza specificare la data usando lettere nella funzione parse
che rende la funzione parse
piuttosto interessante.
La funzione time.Parse
accetta un layout composto da segnaposto formato ora come primo argomento e stringa formattata effettiva che rappresenta l’ora come secondo argomento.
package main
import (
"fmt"
"time"
)
func main() {
timeT, _ := time.Parse("2006-01-02", "2020-04-14")
fmt.Println(timeT)
timeT, _ = time.Parse("06-01-02", "20-04-14")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02", "2020-Apr-14")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05", "2020-Apr-14 Tuesday 23:19:25")
fmt.Println(timeT)
timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05 PM MST -07:00", "2020-Apr-14 Tuesday 11:19:25 PM IST +05:30")
fmt.Println(timeT)
}
Produzione:
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
0001-01-01 00:00:00 +0000 UTC
2020-04-14 23:19:25 +0530 IST
Go ha una costante di layout temporale predefinita nel suo pacchetto.
Costante | disposizione |
---|---|
ANSIC |
"Mon Jan _2 15:04:05 2006" |
UnixDate |
"Mon Jan _2 15:04:05 MST 2006" |
RubyDate |
"Mon Jan 02 15:04:05 -0700 2006" |
RFC822 |
"02 Jan 06 15:04 MST" |
RFC822Z |
"02 Jan 06 15:04 -0700" |
RFC850 |
"Monday, 02-Jan-06 15:04:05 MST" |
RFC1123 |
"Mon, 02 Jan 2006 15:04:05 MST" |
RFC1123Z |
"Mon, 02 Jan 2006 15:04:05 -0700" |
RFC3339 |
"2006-01-02T15:04:05Z07:00" |
RFC3339Nano |
"2006-01-02T15:04:05.999999999Z07:00" |
Stamp |
"3:04PM" |
StampMilli |
"Jan _2 15:04:05.000" |
StampMicro |
"Jan _2 15:04:05.000000" |
StampNano |
"Jan _2 15:04:05.000000000" |
Potremmo usare la costante predefinita come sopra invece della stringa di layout per analizzare la data e l’ora.
package main
import (
"fmt"
"time"
)
func main() {
timeT, _ := time.Parse(time.RFC3339, "2020-04-15T13:45:26Z")
fmt.Println(timeT)
}
Produzione:
2020-04-15 13:45:26 +0000 UTC
Se abbiamo un tipo time.Time
, usiamo la funzione Format
per convertirlo in una stringa
.
package main
import (
"fmt"
"time"
)
func main() {
input := "2020-04-14"
layout := "2006-01-02"
t, _ := time.Parse(layout, input)
fmt.Println(t)
fmt.Println(t.Format("02-Jan-2006"))
}
Produzione:
2020-04-14 00:00:00 +0000 UTC
14-Apr-2020
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn