MiServe DevTools

Ihre Sticker

Heften Sie hier Tools an. Sie werden in diesem Browser gespeichert.

Go-Zeitformat- und strftime-Konverter

Schreiben Sie ein Go-Zeitlayout und sehen Sie die aktuelle Zeit damit formatiert, wandeln Sie zwischen Go-Layouts und strftime um und schlagen Sie die Tokens der Referenzzeit nach.

Bearbeiten Sie eines der beiden Felder, das andere wird angepasst.

Die aktuelle Zeit in diesem Layout

Vordefinierte Layouts
Tokens der Referenzzeit

Die Referenzzeit von Go ist Mon Jan 2 15:04:05 MST 2006. Als 01/02 03:04:05PM '06 -0700 geschrieben, zählen ihre Teile von 1 bis 7: Monat, Tag, Stunde, Minute, Sekunde, Jahr und Zeitzonen-Offset. Wählen Sie ein Token, um es an der Cursorposition in das Layout einzufügen.

Go-TokenBedeutungstrftimeJetzt
Jahr, vierstellig %Y
Jahr, letzte zwei Ziffern %y
Monat als Zahl, zweistellig %m
Monat als Zahl, ohne führende Null %-m
Monatsname, abgekürzt %b
Monatsname, ausgeschrieben %B
Tag des Monats, zweistellig %d
Tag des Monats, ohne führende Null %-d
Tag des Monats, mit Leerzeichen aufgefüllt %e
Tag des Jahres, dreistellig %j
Stunde im 24-Stunden-Format, zweistellig %H
Stunde im 12-Stunden-Format, zweistellig %I
Stunde im 12-Stunden-Format, ohne führende Null %-I
Minute, zweistellig %M
Sekunde, zweistellig %S
AM oder PM %p
Wochentag, abgekürzt %a
Wochentag, ausgeschrieben %A
Abkürzung der Zeitzone %Z
UTC-Offset in Stunden und Minuten, ohne Doppelpunkt %z
UTC-Offset in Stunden und Minuten, mit Doppelpunkt %:z
UTC-Offset mit Doppelpunkt, oder der Buchstabe Z, wenn der Offset null ist —
Sekundenbruchteil mit fester Stellenzahl, eine Stelle pro Null .%L
Sekundenbruchteil ohne nachgestellte Nullen, höchstens eine Stelle pro Neun —

Läuft mit WebAssembly in Ihrem Browser. Nichts, was Sie einfügen, wird hochgeladen.

Über dieses Tool

Ein Layout ist ein Beispiel, kein Muster

Die meisten Sprachen beschreiben ein Datumsformat mit Platzhaltern wie %Y-%m-%d oder YYYY-MM-DD. Go macht es anders: Sie schreiben aus, wie ein bestimmter Zeitpunkt, die Referenzzeit, aussehen soll, und time.Format gibt jede andere Zeit auf dieselbe Weise aus. Die Referenzzeit ist Mon Jan 2 15:04:05 MST 2006.

Die Werte wurden so gewählt, dass sie in der amerikanischen Reihenfolge 01/02 03:04:05PM '06 -0700 aufsteigend zählen: Monat 1, Tag 2, Stunde 3 (oder 15 im 24-Stunden-Format), Minute 4, Sekunde 5, Jahr 6 und ein Zeitzonen-Offset von minus 7 Stunden. Jeder Wert kann nur für eine Sache stehen, daher weiß Go, dass 01 ein Monat ist und 04 eine Minute.

Häufige Fehler

Weil 01 der Monat und 02 der Tag ist, lautet ein Datum mit dem Tag zuerst 02/01/2006, was für jeden, der an die Reihenfolge der Referenzzeit gewöhnt ist, falsch aussieht. Ein Layout, das nach anderen Gewohnheiten geschrieben ist, schlägt auch nicht fehl. Go gibt alles, was es nicht erkennt, als literalen Text aus, daher kommt YYYY-MM-DD unverändert heraus, und jede Ziffer, die es erkennt, liest es als Token, daher wird 2021-12-25 zu Zahlen, die nichts miteinander zu tun haben.

Ein Token lässt sich nicht maskieren. Text, der zufällig eines enthält, wird ersetzt, sodass ein literales Jan, Mon oder eine Ziffer wie 2 in einem Layout zu einem Wert wird. Fügen Sie solchen Text stattdessen außerhalb des Layouts hinzu.

Z07:00 gibt für UTC Z aus und sonst einen numerischen Offset, wie RFC 3339 es erwartet, während -07:00 immer die Zahl ausgibt. Bei Sekundenbruchteilen behält .000 nachgestellte Nullen, und .999 entfernt sie. Monats- und Wochentagsnamen sind immer englisch.

Wie Vorschau und Umwandlung funktionieren

Die Vorschau wird von Gos eigenem time.Format erzeugt, das nach WebAssembly kompiliert ist und in Ihrem Browser läuft. Sie zeigt daher genau das, was ein Go-Programm für denselben Zeitpunkt und Offset ausgibt. Ihr Browser liefert die aktuelle Zeit, den UTC-Offset Ihrer Zeitzone und deren Abkürzung. Wenn der Browser für Ihre Zone keine Abkürzung kennt, wird eine numerische wie +03 verwendet, was Go auch für Zonen ohne eigene Buchstabenabkürzung ausgibt. Bei manchen Zonen weicht die Abkürzung des Browsers von der in der Zeitzonendatenbank ab, die Go liest.

Die beiden Formate decken nicht dasselbe ab. strftime hat keine Direktive, die sich wie Z07:00 verhält, und Go hat kein Token für Wochennummern (%U, %W, %V), für den Wochentag als Zahl (%u, %w) oder für Sekunden seit der Epoche (%s). Der Konverter übernimmt solche Teile unverändert und nennt sie unter dem Feld. Er nennt auch literalen Text in einem strftime-Format, den Go als Token lesen würde, weil ein Layout ihn nicht enthalten kann.

Einige Direktiven auf der strftime-Seite sind Erweiterungen, die nicht jede Implementierung kennt: das Flag, das die Auffüllung entfernt (%-d), der Offset mit Doppelpunkt (%:z) und die Bruchteil-Direktiven %L, %f und %N. Prüfen Sie die Dokumentation der Sprache, für die Sie umwandeln.

Fragen

Warum verwendet Go 2006-01-02 15:04:05 statt YYYY-MM-DD?

Go-Layouts zeigen, wie eine feste Referenzzeit, Mon Jan 2 15:04:05 MST 2006, ausgegeben werden soll. Ihre Teile sind die Zahlen 1 bis 7 in der Reihenfolge Monat, Tag, Stunde, Minute, Sekunde, Jahr, Zeitzonen-Offset, sodass jede Zahl einen Teil des Datums eindeutig bezeichnet, ganz ohne Platzhaltersyntax.

Wie lautet das Go-Layout für einen Zeitstempel nach ISO 8601 oder RFC 3339?

Verwenden Sie 2006-01-02T15:04:05Z07:00, das ist die Konstante time.RFC3339. Für Sekundenbruchteile verwenden Sie time.RFC3339Nano, also 2006-01-02T15:04:05.999999999Z07:00.

Wie gebe ich Millisekunden in einem Go-Layout aus?

Fügen Sie .000 nach den Sekunden ein, wie in 15:04:05.000. Jede Null ist eine Stelle, .000000 ergibt also Mikrosekunden. Verwenden Sie stattdessen Neunen, wie in .999, um nachgestellte Nullen wegzulassen.

Wie bekomme ich das 24-Stunden-Format in einem Go-Layout?

Schreiben Sie die Stunde als 15. Die Werte 03 und 3 stehen für das 12-Stunden-Format und werden normalerweise mit PM kombiniert, was AM oder PM ausgibt.

Weitere Tools in Zeit