Was ist der beste Weg, um den aktuellen Zeitstempel in Go abzurufen und in einen String zu konvertieren? Ich brauche sowohl Datum als auch Uhrzeit in z. JJJJMMTThhmmss Format.
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.
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
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
56
Verwenden Sie zur besseren Lesbarkeit am besten die RFC-Konstanten im Zeitpaket (ich denke)
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
Antworten:
Verwenden Sie die
time.Now()
Funktion und dietime.Format()
Methode.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.quelle
Kitchen
Konstante (= "3:04PM"
)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
quelle
Get current time as formatted string in Go?
. Hoffentlich wird es jemand genehmigen.Verwenden Sie zur besseren Lesbarkeit am besten die RFC-Konstanten im Zeitpaket (ich denke)
quelle
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeVerwenden Sie die Funktionen time.Now () und time.Format () (da time.LocalTime () ab Go 1.0.3 nicht mehr vorhanden ist).
Online-Demo (mit Datum in der Vergangenheit auf dem Spielplatz festgelegt, egal)
quelle
s := "Actual time is: "+time.Now().String()
Weitere Informationen finden Sie in diesem Beitrag: Aktuelles Datum und Uhrzeit in verschiedenen Formaten in Golang abrufen
Dies ist ein Vorgeschmack auf die verschiedenen Formate, die Sie im vorherigen Beitrag finden:
quelle
Als Echo auf die Antwort von @ Bactisme lautet die Vorgehensweise zum Abrufen des aktuellen Zeitstempels (z. B. in Millisekunden):
Ressource: https://gobyexample.com/epoch
quelle
https://golang.org/src/time/format.go angegeben Für die Analyse wird die Zeit
15
für Stunden verwendet,04
wird für Minuten verwendet,05
für Sekunden verwendet.Für Datum Parsen
11
,Jan
,January
ist seit Monaten02
,Mon
,Monday
für Tag des Monats,2006
des Jahres und natürlichMST
für die ZoneSie können aber auch dieses Layout verwenden, was ich sehr einfach finde.
"Mon Jan 2 15:04:05 MST 2006"
DEMO
quelle
Um die genaue Frage zu beantworten:
quelle