Aktuelle Zeit als formatierte Zeichenfolge in Go?


Antworten:


149

Verwenden Sie die time.Now()Funktion und die time.Format()Methode.

t := time.Now()
fmt.Println(t.Format("20060102150405"))

druckt aus 20110504111515, oder zumindest vor ein paar Minuten. (Ich bin auf Eastern Daylight Time.) In den im Zeitpaket definierten Konstanten gibt es mehrere vordefinierte Zeitformate.

Sie können verwenden, time.Now().UTC()wenn Sie lieber UTC als Ihre lokale Zeitzone haben möchten.


15
Ich mag definitiv die KitchenKonstante ( = "3:04PM")
tux21b

5
Danke für diese Info. Woher weiß das Zeitpaket aus der Übergabe von "20060102150405" genau das, was wir übergeben, da es keine der vordefinierten Konstanten im Zeitpaket ist? Welche Bedeutung hat dieses Datum und diese Uhrzeit im Zeitpaket (20060102150405)? Es scheint mir ein bisschen schrullig zu sein, aber solange es funktioniert, spielt es vermutlich keine Rolle, solange wir beim Codieren keinen Fehler machen. Ich denke, sie hielten es nicht für angebracht, eine Konstante für dieses Format bereitzustellen und mit dem Zeichenfolgenmuster übereinzustimmen.
Brianoh

9
@brianoh: Siehe golang.org/pkg/time/#Constants Es ist die Zeit "01/02 03:04:05 PM '06 -0700", da jede Komponente eine andere Nummer hat (1, 2, 3 usw.). Es kann anhand der Zahlen bestimmen, welche Komponenten Sie möchten.
Newacct

1
Bitte beachten Sie, dass time.LocalTime () nicht mehr existiert: siehe meine Antwort unten, um Go 1.0.3-kompatibel zu sein
Deleplace

71

Alle anderen Antworten sind für jemanden, der von Google kommt und nach "timestamp in go" sucht, sehr falsch! YYYYMMDDhhmmss ist kein "Zeitstempel".

Um den "Zeitstempel" eines Datums zu erhalten (Anzahl der Sekunden ab Januar 1970), lautet die korrekte Funktion .Unix () und gibt wirklich eine Ganzzahl zurück


8
Genau; Die Frage sollte "aktuelles Datum" und nicht "aktueller Zeitstempel" heißen
Developerbmw

1
Obwohl es spät ist, denke ich, dass .Unix () auf golang.org/pkg/time/#Time.Unix verweisen sollte, dessen Rückgabetyp int64 ist.
geboren

Obwohl Sie technisch korrekt sind, denke ich, dass viele Programmierer heutzutage den Zeitstempel mit "Die aktuelle Zeit in einer Art formatierter Weise" in Verbindung bringen, sodass dieser Titel für die meisten gleichermaßen verwirrend wäre.
Roger Hill

Ich habe eine Bearbeitung vorgeschlagen - Get current time as formatted string in Go?. Hoffentlich wird es jemand genehmigen.
Akki


32

Verwenden Sie die Funktionen time.Now () und time.Format () (da time.LocalTime () ab Go 1.0.3 nicht mehr vorhanden ist).

t := time.Now()
fmt.Println(t.Format("20060102150405"))

Online-Demo (mit Datum in der Vergangenheit auf dem Spielplatz festgelegt, egal)


6
Und Sie können es einfach als Zeichenfolge wie diese verwenden:s := "Actual time is: "+time.Now().String()
Michael


2

Als Echo auf die Antwort von @ Bactisme lautet die Vorgehensweise zum Abrufen des aktuellen Zeitstempels (z. B. in Millisekunden):

msec := time.Now().UnixNano() / 1000000

Ressource: https://gobyexample.com/epoch


0

https://golang.org/src/time/format.go angegeben Für die Analyse wird die Zeit 15für Stunden verwendet, 04wird für Minuten verwendet,05 für Sekunden verwendet.

Für Datum Parsen 11, Jan, Januaryist seit Monaten 02, Mon, Mondayfür Tag des Monats, 2006des Jahres und natürlichMST für die Zone

Sie können aber auch dieses Layout verwenden, was ich sehr einfach finde. "Mon Jan 2 15:04:05 MST 2006"

    const layout = "Mon Jan 2 15:04:05 MST 2006"
    userTimeString := "Fri Dec 6 13:05:05 CET 2019"

    t, _ := time.Parse(layout, userTimeString)
    fmt.Println("Server: ", t.Format(time.RFC850))
    //Server:  Friday, 06-Dec-19 13:05:05 CET

    mumbai, _ := time.LoadLocation("Asia/Kolkata")
    mumbaiTime := t.In(mumbai)
    fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
    //Mumbai:  Friday, 06-Dec-19 18:35:05 IST

DEMO


-4

Um die genaue Frage zu beantworten:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

Danke Suran, dies ist nützlich, wenn der Zeitstempel am
15.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.