Konvertieren UTC-Zeichenfolge time-Objekt
Habe ich diese datetime, oder etwas, das aussieht wie es.
2014-11-17 23:02:03 +0000 UTC
Ich konvertieren möchten, dies zu einer Zeit, Objekt und ich habe nicht in der Lage zu produzieren eine Ausgabe time.Parse
abgesehen von:
0001-01-01 00:00:00 +0000 UTC
Habe ich versucht, diese layouts:
time.RFC3339
0001-01-01 00:00:00 0000 UTC
2016-10-10
time.UnixDate
Und ein paar mehr - und keiner gearbeitet haben.
Dies ist, wie ich rufe parse
:
updatedAt, err := time.Parse(time.UnixDate, updatedAtVar)
Wie erstelle ich ein Zeit-Objekt aus einem string?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten wahrscheinlich, dass Sie verwendet ein Falsches layout, und Sie nicht überprüfen, die Fehler zurückgegeben.
Layout muss das Datum/Uhrzeit, in dem format Ihre Eingabe Zeit:
Sehen diese arbeiten code:
Ausgang (versuchen Sie es auf die Gehen Spielplatz):
EDIT:
In Ihrer Frage, die Sie enthalten ein
+
Zeichen in Ihre Eingabe-Zeitpunkt (als Teil der zone offset), aber Sie haben den Fehler mit den Zeiten der anderen Formate.Zeit.String()
verwendet die folgenden format-string:Also entweder verwenden Sie diese, um eine Analyse der Zeiten, oder verwenden Sie
Zeit.Format()
produzieren string-Darstellungen, wo können Sie die layout verwenden, so können Sie das gleiche layout, um eine Analyse der Zeit-strings.2. Runde:
Sind Sie einschließlich Ihre Zeit-strings in URLs. Die
+
Zeichen ist ein spezielles Zeichen in der URL-Codierung: es bezeichnet den Platz. Also die+
wird umgewandelt, um Platz (und so verschwindet er aus Ihrer Zeit-string). Verwenden Sie korrekte URL-Codierung! Überprüfen Sie heraus dienet/url
Paket, und dieses Beispiel."2006-01-02 15:04:05 -0700 MST"
und es hat nicht funktioniert. Frage mich, ob jemand wusste, was das layout zu verwenden, da dies eine gängige format. Ich bin buchstäblichtime.Now()
, Umwandlung in String, und Sie es zu entpacken (schreiben ein integration-test)2014-11-17 23:02:03 0000 UTC
das ist die Leistung vontime.Now().String()
(ich erstarrte Zeit für einen test) bekomme ich diesen Fehler in Ihrem Spielplatz0001-01-01 00:00:00 +0000 UTC parsing time "2014-11-17 23:02:03 0000 UTC" as "2006-01-02 15:04:05 -0700 MST": cannot parse "UTC" as "-0700"
+
Zeichen in Ihrer Eingabe als Teil der zone offset.time.Now().String()
. Das ist aus Gehen. Wie können wir eine Funktion in einem Paket, das nicht die Ausgabe einer anderen Funktion in der gleichen Paket zu sein scheinen entwickelt, um zusammen zu arbeiten?r.URL.Query()["updated_at"]
bekomme ich diese Ausgabe. Ich erschaffe die Zeit, wie dieser -time.Now().String()
, und2014-11-17 23:02:03 0000 UTC
ist, was kommt zurück zu mir als einen URL-Parameter.+
ist ein spezielles symbol, das heißt ein Raum. Sehen Sie auf Bearbeiten.url.Encode
auf meinem Weg?Verwenden Sie wahrscheinlich das falsche layout. Wie bereits in
Zeit.Parse
, müssen Sie ein layout anzugeben, das hilft, Gehen zu verstehen, wie die übergebene Datum als Eingabe formatiert wird.Gibt es vordefinierte layouts, die (wie die, die Sie verwenden), aber keiner passt zu Ihrem Eingang. Daher müssen Sie, um eine benutzerdefinierte layout.
Ein layout verwendet, das folgende Datum als Referenz:
Das layout ist nichts anderes, dass die Darstellung dieses Datum entspricht der Darstellung Ihre Eingaben:
Denken Sie auch daran zu überprüfen
err
für Fehler. Es ist wahrscheinlich Ihre versuche, einen Fehler zurückgegeben, aber Sie nicht überprüfen, es.time.Now().String
als url-parameter. Ich bin dann entpacken, die parameter und versuchen Sie zu konvertieren zurück in eine Zeit (dies ist ein test, dass ich Schreibe). Die Ausgabe, die ich vontime.Now().String
sobald es ausgepackt ist2014-11-17 23:02:03 0000 UTC
, die nicht analysiert wird. Ich weiß, ich habe das falsche layout. Ich bin versuchen zu finden, welches layout.Habe dies nicht, aber für diejenigen, die nicht wissen, die Formate, die Zeit hat die Formate als Konstanten vordefiniert. so können Sie verweisen Sie bei der Analyse oder formatieren.
Hier sind Sie für Referenz