Analizza la stringa della data in Go

  1. Rappresentazione di data e ora in Go
  2. 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

Articolo correlato - Go String

  • Concatena le stringhe in modo efficiente in Go