2011-07-05 16 views
14

Próbuję przeanalizować znacznik czasu, który został wygenerowany przez tar, taki jak "2011-01-19 22:15", ale nie może wyodrębnić funky API czasu.Parse.Przetwarzanie daty w Go

Poniższa produkuje 'czas parsowania "2011-01-19 22:15": miesiąc poza zakresem'

package main 
import (
    "fmt" 
    "time" 
    ) 

func main() { 
    var time , error = time.Parse("2011-01-19 22:15","2011-01-19 22:15") 
    if error != nil { 
     fmt.Println(error.String()) 
     return 
     } 
    fmt.Println(time) 
    } 
+0

nie odpowiedzieć, bo peterSO doskonale odpowiedział ale chciałbym precyzyjny, że nie jesteś jedyną osobą, aby znaleźć tę amerykańską ostry data-centric API. Zastanawiam się nad stworzeniem narzędzia pomagającego w tworzeniu tych konkretnych łańcuchów parsujących ze znormalizowanych (ISO 8601, jak przypuszczam). –

+0

Pakiet czasu udostępnia standardowe formaty: http://golang.org/pkg/time/#pkg-constants – Jeremy

Odpowiedz

32

postępuj zgodnie z instrukcjami w dokumentacji time package Go.

Czas standardem używanym w układach jest:

Pon 02 stycznia 2006 15:04:05 MST (MST jest GMT-0700)

która jest godzina Unix 1136243045. (Pomyśl o z tego jako 01/02 03:04:05PM '06 -0700.) Aby zdefiniować własny format, zapisz , jak będzie wyglądać standardowy czas sformatowany w określony sposób.

Na przykład

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    t, err := time.Parse("2006-01-02 15:04", "2011-01-19 22:15") 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 
    fmt.Println(time.SecondsToUTC(t.Seconds())) 
} 

Output: Wed Jan 19 22:15:00 UTC 2011 
+0

Tak, to działa. –

+9

Zwróć uwagę, że nie możesz użyć tylko jednego roku lub miesiąca dla szablonu, musi to być jeden ze standardowych szablonów. – serbaut