Ich habe ein Date
Objekt. Wie rendere ich den title
Teil des folgenden Snippets?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
Ich habe den Teil "Relative Zeit in Worten" aus einer anderen Bibliothek.
Ich habe folgendes versucht:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Aber das gibt mir:
"2010-4-2T3:19"
javascript
datetime
iso8601
James A. Rosen
quelle
quelle
new Date("xx").toISOString()
produziertNaN-NaN-NaNTNaN:NaN:NaN.NZ
die native Implementierung wirft RangeException.Siehe das letzte Beispiel auf Seite https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
quelle
<abbr title="2010-04-02T14:12:07">
) bereitgestellte Stichprobe hat keine Zeitzone. Vielleicht wollten sie die Ortszeit, was für eine UI-Zeitzeichenfolge sinnvoll wäre?Nahezu jede ISO-Methode im Web löscht die Zeitzoneninformationen, indem vor der Ausgabe der Zeichenfolge eine Konvertierung in die "U" -Ulu-Zeit (UTC) angewendet wird. Die native .toISOString () des Browsers löscht auch Zeitzoneninformationen.
Dadurch werden wertvolle Informationen verworfen, da der Server oder Empfänger jederzeit ein vollständiges ISO-Datum in die Zulu-Zeit oder die erforderliche Zeitzone konvertieren kann, während die Zeitzoneninformationen des Absenders abgerufen werden.
Die beste Lösung, auf die ich gestoßen bin, besteht darin, die Javascript-Bibliothek von Moment.js zu verwenden und den folgenden Code zu verwenden:
Um die aktuelle ISO-Zeit mit Zeitzoneninformationen und Millisekunden abzurufen
Abrufen der ISO-Zeit eines nativen JavaScript-Datumsobjekts mit Zeitzoneninformationen, jedoch ohne Millisekunden
Dies kann mit Date.js kombiniert werden, um Funktionen wie Date.today () zu erhalten, deren Ergebnis dann an moment übergeben werden kann.
Eine so formatierte Datumszeichenfolge ist JSON-Compilant und eignet sich gut zum Speichern in einer Datenbank. Python und C # scheinen es zu mögen.
quelle
moment(new Date()).format()
. "Ab Version 1.5.0 wird beim Aufrufen des Moment # -Formats ohne Format standardmäßig ... das ISO8601-Format verwendet.YYYY-MM-DDTHH:mm:ssZ
" Doc: Scrollenmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
Die gestellte Frage war das ISO-Format mit reduzierter Genauigkeit. Voila:
Angenommen, das nachfolgende Z wird gewünscht, andernfalls einfach weglassen.
quelle
Kürzeste, aber von Internet Explorer 8 und früheren Versionen nicht unterstützte:
quelle
Wenn Sie IE7 nicht unterstützen müssen, ist das Folgende ein großartiger, prägnanter Hack:
quelle
toJSON
stattdessen die Datumsmethode.JSON.stringify
benutzt es sowieso unter der Decke.JSON
Objekt, jedoch nicht in einigen Kompatibilitätsmodi. Siehe stackoverflow.com/questions/4715373/….toISOString()
?Normalerweise möchte ich kein UTC-Datum anzeigen, da Kunden die Konvertierung nicht gerne in ihrem Kopf durchführen. Um ein lokales ISO-Datum anzuzeigen , verwende ich die Funktion:
Bei der obigen Funktion werden Informationen zum Zeitzonenversatz weggelassen (außer wenn die Ortszeit zufällig UTC ist). Daher verwende ich die folgende Funktion, um den lokalen Versatz an einem einzelnen Ort anzuzeigen. Sie können die Ausgabe auch an die Ergebnisse der obigen Funktion anhängen, wenn Sie den Versatz jedes Mal anzeigen möchten:
toLocalIsoString
verwendetpad
. Bei Bedarf funktioniert es wie fast jede Pad-Funktion, aber der Vollständigkeit halber verwende ich Folgendes:quelle
Nach dem 'T' fehlt ein '+'.
Sollte es tun.
Für die führenden Nullen können Sie dies von hier aus verwenden :
Verwenden Sie es so:
quelle
quelle
Das Problem mit toISOString ist, dass datetime nur als "Z" angegeben wird.
ISO-8601 definiert auch Datum und Uhrzeit mit Zeitzonenunterschied in Stunden und Minuten in Form von 2016-07-16T19: 20: 30 + 5: 30 (wenn die Zeitzone vor UTC liegt) und 2016-07-16T19: 20: 30-01 : 00 (wenn die Zeitzone hinter UTC liegt).
Ich denke nicht, dass es eine gute Idee ist, ein anderes Plugin, moment.js, für eine so kleine Aufgabe zu verwenden, besonders wenn Sie es mit ein paar Codezeilen bekommen können.
Sobald Sie den Zeitzonenversatz in Stunden und Minuten festgelegt haben, können Sie ihn an eine Datums- / Uhrzeitzeichenfolge anhängen.
Ich habe einen Blog-Beitrag darüber geschrieben: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
quelle
Ich würde diese kleine Erweiterung nur verwenden, um
Date
- http://blog.stevenlevithan.com/archives/date-time-formatquelle
Ich konnte mit sehr wenig Code unter die Ausgabe kommen.
Ausgabe:
quelle
Ich habe die Grundlagen zu Stack Overflow irgendwo gefunden (ich glaube, es war Teil eines anderen Stack Exchange-Code-Golfspiels) und es verbessert, damit es auch in Internet Explorer 10 oder früher funktioniert. Es ist hässlich, aber es erledigt den Job.
quelle
Um Seans großartige und prägnante Antwort mit etwas Zucker und moderner Syntax zu erweitern:
Dann zB.
quelle