Go в примери: Разбор и показване на Time

Го поддържа задаване на изглед и разбор на време чрез примерни1 изгледи.


  1. pattern – образец, пример, еталон, мостра
package main
import (
    "fmt"
    "time"
)
func main() {
    p := fmt.Println

Ето основен пример за задаване формат на време според RFC33391 с помощта на съответната непроменлива примерна стойност.


  1. RFC - Request For Comment. IETF интернет стандарт RFC 3339, основан на ISO 8601 – международен стандарт за обмен на дати и данни за време.
    t := time.Now()
    p(t.Format(time.RFC3339))

При разбор на време от подаден низ, същите примерни стойности биват ползвани за задаване на очакван изглед (формат).

    t1, e := time.Parse(time.RFC3339, "2026-03-10T21:26:41+02:00")
    p(t1)

Методите Format и Parse използват изложения, основани на примери. За задаване на тези изложения обикновено се ползва непроменлива стойност от пакета time, но можете да подавата и ваши, потребителски изложения. Изложенията трябва задължително да са някаква разновидност на примерното време Mon Jan 2 15:04:05 MST 2006, за да укажат образеца, който да се ползва при разбор от низ или извеждане на време. Примерът трябва да е точно това време – 2006 за година, 15 за час, Monday за деня от седмицата и т.н.

    p(t.Format("3:04PM"))
    p(t.Format("Mon Jan _2 15:04:05 2006"))
    p(t.Format("2006-01-02T15:04:05.999999-07:00"))
    form := "3 04 PM"
    t2, e := time.Parse(form, "8 41 PM")
    p(t2)

При чисто числово представяне можете да ползвате обикновено извеждане чрез задаване на изглед на стойностите в низ като прилагате глаголи върху съответните съставни части от времевата стойност.

    fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Методът Parse ще върне грешка за развален вход и ще обясни каква е причината за грешката. (В този случай денят от седмицата няма как да бъде разпознат в подаденото време “8:41PM”)

    _, e = time.Parse("Mon Jan _2 15:04:05 2006", "8:41PM")
    p(e)
}
$ go run time-formatting-parsing.go 
2026-03-10T21:46:15+02:00
2026-03-10 21:26:41 +0200 EET
9:46PM
Tue Mar 10 21:46:15 2026
2026-03-10T21:46:15.367028+02:00
0000-01-01 20:41:00 +0000 UTC
2026-03-10T21:46:15-00:00
parsing time "8:41PM" as "Mon Jan _2 15:04:05 2006": cannot parse "8:41PM" as "Mon"

Следващ пример: .