2017-06-27 3 views
0

Ich muss eine Datetime-Zeichenfolge analysieren, die von einem Pseudozufallszeitgenerator erzeugt wird, die Unix() -Funktion verwendet. Die erzeugte Datumzeit nimmt verschiedene Datums- und Zeitpaare zwischen 2010 und 2017. Hier ist das Problem, diese Version des Codes auf meine beiden Computer arbeitet und Spielplatz,Golan Zeitanalyse funktioniert nicht ordnungsgemäß beim Arbeiten auf Spielplatz

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    a := time.Date(2016, 1, 0, 0, 0, 0, 0, time.UTC).Unix() 
    kk := time.Unix(a, 0) 
    t, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", kk.String()) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(t) 
} 

Aber die Version arbeitet unter auf Spielplatz und gerät in Panik auf meinem Computer,

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    a := time.Date(2018, 1, 0, 0, 0, 0, 0, time.UTC).Unix() 
    kk := time.Unix(a, 0) 
    t, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", kk.String()) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(t) 
} 

Hier ist der Fehler,

panic: parsing time "2017-12-31 03:00:00 +0300 +03" as "2006-01-02 15:04:05.999999999 -0700 MST": cannot parse "+03" as "MST" 

die Go-Version ich benutze, ist go1.8.3 darwin/amd64.

Irgendwelche Ideen?

+0

Mein erster Gedanke ist die Version von Golang, die Sie verwenden. Ich habe die zweite Version in Gogland-EAP mit go 1.8.3 auf einem Mac ausgeführt und hatte keine Probleme. Hier ist die Ausgabe: 2017-12-30 19:00:00 -0500 EST Prozess beendet mit Exit-Code 0 – ahillman3

+0

Ich hätte die Version, die ich verwende, go1.8.3 darwin/amd64 erwähnt. Keine IDE oder irgendetwas, ich laufe einfach durch das Terminal. Vor dieser Version habe ich 1.7.2 verwendet und vor einer Stunde aktualisiert, nur um zu sehen, ob Update das Problem für mich lösen würde. – malisit

+0

Identisch mit mir. Ich habe es nur Kommandozeile gemacht. Kein Problem. Ausgabe: go run main.go 2017-12-30 19:00:00 -0500 EST – ahillman3

Antwort

0

Das Problem hier bezieht sich auf die Abkürzung für Europe/Istanbul.

Die Türkei ist von EET/EEST (+ 02/+ 03) auf permanent +03, in Kraft getreten 2016-09-07. (Danke an Burak AYDIN.) Verwenden Sie "+03" eher als eine erfundene Abkürzung für die neue Zeit.

Zeit Paket zur Zeit nicht akzeptiert +03 als EET/EET und dieses Problem tritt auf, wenn eine Datetime-Zeichenfolge verwenden, die +03 als Zeitzone enthält in Form von 2006-01-02 15:04:05.999999999 -0700 MST zu analysieren.

Verwandte Themen