Der folgende Beitrag wurde von Ty Strong verfasst. Ty bemerkte einen seltsamen Mangel an Informationen zum <time>-Element hier auf CSS-Tricks und ich stimmte ihm zu. Das darf nicht passieren! Bitte weitermachen, Ty.
Das <time>-Element in HTML repräsentiert ein maschinenlesbares Datum, eine Uhrzeit oder eine Dauer. Es kann nützlich sein für die Erstellung von Veranstaltungsplänen, Archiven und anderen zeitbasierten Funktionen. WordPress verwendet das time-Element im Standarddesign. Reddit verwendet ebenfalls das time-Element.

<time>-Element für Post-Daten.Eine kurze Geschichte
Das time-Element hatte einen steinigen Weg. Es wurde 2009 in die HTML5-Spezifikationen aufgenommen. Zwei Jahre später, 2011, wurde die Spezifikation fallen gelassen und durch ein viel breiteres Element, <data>, ersetzt. Später im selben Jahr wurde das time-Element mit einigen überarbeiteten Funktionen wieder aufgenommen.
Seien Sie versichert, Sie können es verwenden!
Bruce Lawson deckt die Situation gut ab: weg, zurück, jetzt. Ein klassischer Moment in der HTML-Geschichte des „Pflasterns von Kuhwegen“.
Der Tag und das Attribut
Time ist nur ein HTML-Tag. Hier ist ein einfaches Beispiel, das November 2011 repräsentiert
<time>2011-11</time>
Der Text darin ist zufällig ein gültiger Wert für das datetime-Attribut (mehr dazu gleich). Aber das muss nicht sein. Sie könnten diesen Text in ein datetime-Attribut verschieben und einen anderen Text verwenden.
<time datetime="2011-11">A cold winter month many years ago</time>
Das datetime-Attribut ist das, was das time-Element einzigartig macht. Es repräsentiert das Datum, die Uhrzeit oder die Dauer für jeden Text, den Sie in einem maschinenlesbaren Format darstellen. Das bedeutet, es ist für Computer und nicht für Menschen, daher hat es sehr spezifische Formate.
Es ist wahrscheinlich etwas üblicher, dass die für Menschen lesbare Version nur eine textuelle Darstellung des datetime ist
<time datetime="2011-11">November, 2011</time>
10 Wege
Es gibt eine Vielzahl von Standardwegen, um das datetime-Attribut zu formatieren.
Jahr und Monat
2014-06
Sehr einfach. Jahr vor Monat.
Datum
1969-07-16
Jahr, Monat und dann Tag.
Jahresloses Datum
12-31
Monat vor Tag.
Nur Zeit
14:54:39.929
Stunde, Minute, dann Sekunden. Sekunden sind optional. Bruchteile von Sekunden können bis zu drei Stellen darstellen.
Datum und Uhrzeit
2013-11-20T14:54
Kombination aus Datum und Uhrzeit, getrennt durch ein Großbuchstaben T. Das große „T“ kann durch ein Leerzeichen ersetzt werden.
Zeitzonenverschiebung
+06:00
Beginnt mit einem Plus- oder Minuszeichen. Ein Doppelpunkt (:) ist optional. +00:00 oder UTC-Zeit kann durch den Großbuchstaben „Z“ dargestellt werden.
Lokales Datum und Uhrzeit
2019-12-31T23:59:59-02:00
Dies ist dasselbe wie Datum und Uhrzeit mit einer hinzugefügten Zeitzonenverschiebung. Auch hier kann „T“ durch ein Leerzeichen ersetzt werden.
Jahr und Woche
2010-W21
Jahr gefolgt von einem Großbuchstaben „W“ mit der entsprechenden Wochennummer.
Nur Jahr
1776
Dies muss vier oder mehr Ziffern haben, daher funktionieren sowohl `0001` als auch `12345`.
Dauer (Methode Eins)
P2DT2H30M10.501S
Großer Buchstabe „P“, ein optionaler Tageswert, großer Buchstabe „T“, dann optionale Werte für Stunden, Minuten und Sekunden. Alle Buchstaben müssen großgeschrieben sein.
Dauer (Methode Zwei)
1w 2d 2h 30m 10.501s
Woche (w), Tag (d), Stunde (h), Minute (m) und Sekunden (s). Der Buchstabe kann groß- oder kleingeschrieben sein. Leerzeichen sind optional.
Beispiele
Google released Gmail Blue on <time datetime="2013-04-01">April 1st, 2013</time>.
The Chelyabinsk meteor entered Earth's atmosphere over Russia on <time datetime="2013-02-15T09:20+06:00">15 February 2013 at about 09:20 YEKT (03:20 UTC)</time>.
The Apollo 13 mission lasted a total of <time datetime="5d 22h 54m 41s">5 days, 22 hours, 54 minutes, and 41 seconds</time>.
Probleme bei der Formatierung des Datetime?
Mit diesem kleinen Werkzeug können Sie ein bestimmtes Datum oder eine bestimmte Uhrzeit (oder beides) eingeben und es wird den korrekten datetime-Wert ausgeben.
Siehe den Pen Datetime Creator Tool von Chris Coyier (@chriscoyier) auf CodePen.
Browser-Unterstützung
Browserunterstützung ist kein großes Problem mit dem time-Element. Wenn ein Browser damit vertraut ist, ist es großartig, wenn nicht, wird er es als generisches Inline-Element behandeln, was völlig in Ordnung ist. Das datetime-Attribut ist ebenfalls perfekt zugänglich.
Es gibt jedoch eine DOM-Schnittstelle, die mit dem time-Element verbunden ist. Insbesondere `dateTime` sollte auf einer Referenz zu diesem Element verfügbar sein.
<p>The concert took place on <time datetime="2001-05-15 19:00">May 15</time>.</p>
<script>
var time = document.getElementsByTagName("time")[0];
console.log(time.dateTime);
// outputs "2001-05-15 19:00"
</script>
Dies wird nur in Firefox unterstützt und ist ohnehin nicht besonders nützlich, da es nur dieses Attribut zurückgibt (es gibt nicht einmal einen Wert zurück, wenn das Attribut nicht vorhanden ist, aber der Text ein gültiger Wert ist, was sinnvoll zu sein scheint).
Was ist der Vorteil der Verwendung von <time>?
Ich werde Bruce noch einmal zitieren, da er es in einem Beitrag auf HTML5 Doctor sehr gut ausdrückt
Die Verwendungszwecke von eindeutigen Datumsangaben in Webseiten sind nicht schwer vorstellbar. Ein Browser könnte anbieten, Ereignisse zum Kalender eines Benutzers hinzuzufügen. Ein thailändisch lokalisierter Browser könnte anbieten, gregorianische Daten in thailändische buddhistische Ära-Daten umzuwandeln. Ein japanischer Browser könnte
<time>16:00</time>in „16:00時“ lokalisieren. Content-Aggregatoren können visuelle Zeitstrahlen von Ereignissen erstellen.Suchmaschinen können intelligentere Suchergebnisse liefern. Zum Beispiel habe ich bei dem jüngsten starken Schneefall im Vereinigten Königreich nach Schulschließungen in meiner Stadt gesucht und festgestellt, dass die Schule meiner Kinder geschlossen war. Nachdem ich einen Anruf von der Schule erhalten hatte, in dem ich gefragt wurde, wo meine Kinder seien, untersuchte ich die Webseite erneut. In Kleindruck am unteren Rand der Seite stand: „Veröffentlicht am 5. Januar 2008“. Ich gehe davon aus, dass Betreiber von Suchmaschinen aktuellere Seiten bei Suchanfragen mit Bezug auf aktuelle Ereignisse höher einstufen.
Sonstige Kleinigkeiten
Eine weitere Sache, die Sie mit dem time-Element machen können, ist das Hinzufügen eines title-Attributs, um dem Benutzer detailliertere Informationen anzuzeigen. Das bedeutet, Sie können dieselbe Information auf drei Arten anbieten
- Eine schön lesbare Anzeigeform
- Ein detaillierteres, menschlich lesbares Hover-Format
- Ein maschinenlesbares Format
Dies wird auf CodePen verwendet

Dies ist der Rails-Code, der diese verschiedenen Formate ausgibt (STRFTIME ist ein schönes Werkzeug dafür)
<time
datetime="<%= @pen.created_at.strftime("%Y-%m-%dT%H:%M") %>"
title="<%= @pen.created_at.strftime("%Y-%m-%d at %I:%M %p") %>">
<%= @pen.created_at.strftime("%B %d, %Y") %>
</time>
Verwenden Sie <time> in einem Ihrer Projekte?
Es ist eine schöne native Komponente, aber sie ist nur für Chrome verfügbar, in Firefox wird sie nicht unterstützt.
Quelle: http://html5test.com/
Ich bin mir nicht sicher, wo Sie das sehen, aber laut caniuse ist es mit jedem wichtigen Browser kompatibel (wenn man IE8 nicht mitzählt). Interessanterweise scheint MDN zu glauben, dass es in Chrome nicht unterstützt wird.
Unabhängig davon, ob der Browser das Element technisch unterstützt oder nicht, funktioniert das
time-Element weiterhin korrekt mit den meisten JavaScript-Funktionen. Es wird auch korrekt angezeigt, da es standardmäßig als Inline-Block angezeigt wird.Ich habe den MDN-Artikel gemäß caniuse aktualisiert, warte nur auf die Überprüfung.
Würde ich es mit relativen Zeiten verwenden? Wenn ja, müsste dann ein vollständiges Datum im Attribut stehen, nehme ich an?
Ja, Sie können es mit *den meisten* relativen Zeiten verwenden. Für die Tageszeit können Sie die Zeitzonenverschiebung einfach weglassen. Für Daten können Sie breitere Zeitspannen wählen, wie eine bestimmte Woche, einen Monat oder ein Jahr. Ausnahmen sind Angaben wie „Irgendwann im 18. Jahrhundert“.
Danke für die Klärung, Ty. Es ist schwer, Informationen über das time-Element zu finden, da sich sein Status so oft geändert hat.
Eine Sache, die mich bei der Verwendung stört, ist, dass diese Auszeichnung nicht validiert
Ich erhalte die folgende Fehlermeldung auf dem w3.org Validator, die wahrscheinlich falsch ist
Ich bin mir nicht sicher, welchen „Bereich“ es sucht, aber eine schnelle Google-Suche ergab nichts.
Der 31. August 2013 ist nicht dasselbe wie der 31.09.2013.
Der 31.09.2013 ist der 31. September 2013, der nicht existiert.
JAHR-MONAT-TAG ist das richtige Format.
Es gibt keinen 31.09.2013, nur den 30.09.2013.
Ha! Mathias hat absolut Recht. Es gibt keinen 31. August 2013! So viel zum Einfügen zufälliger Daten auf Seiten.
Danke, Mathias!
Es gibt einen 31. August. Aber keinen 31. September.
Ich habe „ auf Projekten verwendet, bei denen ich Microformats implementiert habe. Früher, um das h-event-Format (früher hCalendar) zu verwenden, hätte man Start- und Enddaten/-zeiten mit einem semantisch fragwürdigen
<abbr>-Element markiertAber jetzt können wir einfach „ wie hier gezeigt verwenden
Es fühlt sich korrekter an.
Hmmm, der Kommentarparser mag
timenicht in den Klammern. Entschuldigung. Der erste Satz sollte lauten: „Ich habetimeauf Projekten verwendet…“, und die Aussage vor dem zweiten Beispiel sollte lauten: „Aber jetzt können wir einfachtimewie hier gezeigt verwenden:“Schöne Erklärung! Wir haben das time-Element bei unserem Redesign von TechCrunch verwendet.
Sehr informativ. Es ist nicht einfach, all diese Informationen zusammenzutragen, mit dem Ziel dieses (eher ungewöhnlichen) Elements.
Ich habe es manchmal verwendet, aber ich entwickle hauptsächlich Webanwendungen, die nicht von Suchmaschinen indiziert werden, daher ist seine Rolle schwach. Für mich ist das Schlimmste, dass IE8 und niedriger es nicht ohne den alten html5-shiv-Trick stylen können. Also Vorsicht.
Während wir unsere Markups bei der Erstellung von Webseiten vorantreiben, wird es komplizierter und spezifischer. Danach kommt noch das Micro-Formatting von Schema.org…
Schöne Erklärung! Ich verwende
timefür alle Post-Daten auf WordPress-Websites und ich verwende PHP, um das datetime-Attribut wie folgt auszugeben:the_time( 'c' ).Nachdem ich diesen Beitrag gelesen habe, sehe ich immer noch keinen Unterschied zwischen
1. April 2013und
1. April 2013Es gibt das hier…
Das ist jedoch einfach zu machen, zum Beispiel
1. April 2013Also, die Frage ist, warum ein weiterer Tag und nicht nur eine Klasse?
Wie kann ich Kommentare bearbeiten? :-/
Chris C. Hinweis: Der [Inline Code]-Button funktionierte nicht in der Ausgabe. Er zeigte den Code nicht an, sondern wurde als HTML interpretiert :-/
Unterschied?
<time datetime=”2013-04-01″>1. April 2013</time>
…
<span data-datetime=”2013-04-01″ class=”time”>1. April 2013</span>
Technisch gesehen könnten Sie
<div>-Tags für Absätze, fetten Text, Listenelemente und Schaltflächen verwenden. Obwohl Sie es *können*, gibt es bessere, spezifischere Tags, die Sie verwenden könnten. Ein Teil des Grundes, warum dertime-Tag zurückgebracht und nicht der generischedata-Tag verwendet wurde, war, einen spezifischeren Tag nur für Daten, Uhrzeiten und Dauern zu haben. Ich hoffe, das hat geholfen!Danke für diesen Beitrag, Ty!
Ich muss zugeben, dass ich die Verwendung des „ Elements nicht wirklich kenne, also danke, dass Sie diesen Beitrag geschrieben haben! Ich hoffe, er wird den Leuten den Gebrauch dieses Elements besser verständlich machen, so wie er es für mich tut!
Ausgezeichneter Beitrag, Ty. Haben Sie weitere Ratschläge für die korrekte Verwendung für SEO-Praktiken? Gibt es etwas mehr zu beachten oder ist das die ganze Rezeptur?
Gratuliere nochmals!
Danke! Suchmaschinen haben begonnen (oder werden bald beginnen), den time-Tag zu verwenden, um aktuellere veröffentlichte Artikel zu finden und sie höher einzustufen. Dies kann Ihnen helfen, wenn Sie den Artikel zum ersten Mal veröffentlichen, aber Ihnen später schaden, wenn Ihr Artikel sehr alt ist. Eine Idee, um Ihren Artikel höher einstufen zu lassen, könnte sein, Ihrer Seite Folgendes hinzuzufügen: „Artikel zuletzt aktualisiert am _ time tag_“
Ich liebe die Idee, <time> zu verwenden, um Suchergebnisse für zeitkritische Abfragen (z. B. Wetteraktualisierungen, Sportaktualisierungen, Katastrophenaktualisierungen usw.) zu verbessern, aber ich kann sehen, dass das schnell nach hinten losgeht. Was hindert jemanden daran, ein kleines Skript auf seiner Seite zu platzieren, das jedes Mal, wenn die Seite geladen wird, das aktuelle Datum und die aktuelle Uhrzeit ausgibt?
Für Zugänglichkeit und Semantik? Dieses Element ist wunderbar.
Für SEO? Hoffentlich eines Tages, aber im Moment ist es leider noch nicht bereit für die Prime Time.
Toller Artikel, Ty.
Ich habe eine Frage, wie würde man es machen, wenn man etwas wie: **2 Tage her** anzeigen möchte?
Danke
Verwenden Sie ein time-Element nur, wenn Sie ein konkretes Datum, eine konkrete Uhrzeit oder eine konkrete Dauer haben. Ansonsten verwenden Sie kein time-Element.
@Mathias, obwohl das <time>-Element gleichzeitig einem so vagen Ausdruck wie **2 Tage her** ein konkretes Datum, eine konkrete Uhrzeit oder eine konkrete Dauer hinzufügen kann.
@Patricio, Sie könnten es so markieren…
Ja, das stimmt. Aber es ist nur möglich, wenn Sie dieses bestimmte Datum kennen.
Beispiel: Wenn Sie an den Tests teilnehmen möchten, müssen Sie sich mindestens 2 Tage im Voraus anmelden.
@James, danke für Ihren Kommentar dazu.
@Mathias, das ist ein sehr guter Punkt.
Vielen Dank.
Was ist mit dem pubdate-Attribut?
Das Attribut
pubdatewurde sowohl aus den WHATWG- als auch aus den W3C-Spezifikationen gestrichen. Damals, 2011, als dastime-Element wieder auftauchte, kampubdatenicht mit zurück.Ich verwende
timeimmer für die Veröffentlichungsdaten von Blogs. Mein aktueller Blog verwendet Jekyll, was es ziemlich einfach macht<time class=”meta” datetime=”{{ page.date }}”>{{ page.date | date_to_string }}</time>
(Sie können sich den Quellcode ansehen, wenn Sie möchten, er ist Open Source. Ich habe diesen Schnipsel aus dieser Datei)
Danke Ty für die Klärung.
Ich ging davon aus, dass dies der Fall ist.
Der
<time>Tag ist in der Tat ein wichtiger Tag, den viele von uns leicht übersehen können. Danke für den Artikel. Ich bin sicher, viele von uns werden sich von nun an daran erinnern, den time-Tag zu verwenden.Toller Artikel, Ty.
Ich habe eine Frage, wie würde man es machen, wenn man etwas wie: 2 Tage her anzeigen möchte?
Danke