Ich versuche, JS zu verwenden, um a date object
in einen String im YYYYMMDD
Format umzuwandeln. Gibt es einen einfacheren Weg , als verketten Date.getYear()
, Date.getMonth()
und Date.getDay()
?
javascript
date
IVR Avenger
quelle
quelle
Antworten:
Geänderter Code, den ich oft benutze:
quelle
[1]
mit.length===2
, weil ein Indexer auf einer Schnur nicht vollständig unterstützt. Siehe diese Antwort aus Gründen warum.[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
Ich mochte es nicht, den Prototyp zu ergänzen. Eine Alternative wäre:
quelle
rightNow
Variable nicht benötigen , könnennew Date
Sie sie in einer einzigen Zeile(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, also tat ich Folgendes :var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. Ziemlich einfach, sollte aber gekapselt werden.rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
Sie können die
toISOString
Funktion verwenden:Sie erhalten ein "JJJJ-MM-TT" -Format.
quelle
Moment.js könnte dein Freund sein
quelle
var formattedDate = moment().format('YYYYMMDD');
Wenn Sie keine reine JS-Lösung benötigen, können Sie die jQuery-Benutzeroberfläche folgendermaßen ausführen:
Normalerweise importiere ich nicht gerne zu viele Bibliotheken. Die jQuery-Benutzeroberfläche ist jedoch so nützlich, dass Sie sie wahrscheinlich an einer anderen Stelle in Ihrem Projekt verwenden werden.
Weitere Beispiele finden Sie unter http://api.jqueryui.com/datepicker/
quelle
Dies ist eine einzelne Codezeile, mit der Sie eine
YYYY-MM-DD
Zeichenfolge mit dem heutigen Datum erstellen können .quelle
toISOString()
2015-12-31T22: 00: 00 GMT +0 (zwei Stunden zuvor) angezeigt wird .quelle
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
Zusätzlich zu oos Antwort möchte ich empfehlen, logische Operationen von der Rückgabe zu trennen und sie stattdessen als ternäre Dateien in die Variablen einzufügen.
Verwenden Sie
concat()
diese Option auch, um eine sichere Verkettung von Variablen zu gewährleistenquelle
("00" + (this.getDate())).slice(-2)
, um die Zahlen zweistellig zu erhalten. Es gibt keine "if" - oder "?:" - Anweisung und weniger Aufrufe der Funktion .getX (). Wenn nicht ein bisschen schneller, ist es zumindest besser lesbar.Ich mag es nicht, native Objekte zu ändern, und ich denke, die Multiplikation ist klarer als die Zeichenfolge, die die akzeptierte Lösung auffüllt.
Geige: http://jsfiddle.net/gbdarren/Ew7Y4/
quelle
.replace('-', '')
, damit es die Frage des OP beantwortet), während Sie der ursprünglichen Frage des OP treu waren und es diesen zusätzlichen Schritt nicht erfordern würde. Ausgezeichnet!Einfache JS (ES5) -Lösung ohne mögliche Probleme mit dem Datumssprung, die durch das Drucken von Date.toISOString () in UTC verursacht werden:
Dies als Antwort auf den Kommentar von @ weberste zur Antwort von @Pierre Guilbert.
quelle
toISOString
mehrere aufeinanderfolgende Bindestriche zurückgegeben werden?quelle
quelle
new Date()
Erstellt ein neues Datumsobjekt, das nur ein Wrapper um nr ist. von ms seit 1970/01/01 00: 00: 00.000 UTC. DanntoISOString
druckt in lokaler Zeitzone aus.Eine andere Möglichkeit ist die Verwendung
toLocaleDateString
mit einem Gebietsschema, das einen Big-Endian-Datumsformatstandard aufweist , z. B. Schweden, Litauen, Ungarn, Südkorea, ...:Um die Trennzeichen (
-
) zu entfernen, müssen nur die nicht Ziffern ersetzt werden:Dies hat nicht den potenziellen Fehler, den Sie bei UTC-Datumsformaten erhalten können: Das UTC-Datum kann im Vergleich zum Datum in der lokalen Zeitzone einen Tag frei haben.
quelle
Sie können einfach diesen einen Zeilencode verwenden, um das Datum im Jahr zu erhalten
quelle
Etwas vereinfachte Version für die beliebteste Antwort in diesem Thread https://stackoverflow.com/a/3067896/5437379 :
quelle
Datumsformat ist ein sehr verwendetes Paket.
Wie benutzt man:
dateformat
Von NPM herunterladen und installieren . Benötigen Sie es in Ihrem Modul:const dateFormat = require('dateformat');
und dann formatiere einfach deine Sachen:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
quelle
Dieser Typ hier => http://blog.stevenlevithan.com/archives/date-time-format hat eine
format()
Funktion für das Javascript geschriebenDate
Objekt geschrieben, damit es mit bekannten Literalformaten verwendet werden kann.Wenn Sie eine Datumsformatierung mit vollem Funktionsumfang im Javascript Ihrer App benötigen, verwenden Sie diese. Andernfalls ist es wahrscheinlich am einfachsten, getYear (), getMonth (), getDay () zu verketten, wenn Sie eine einmalige Aktion ausführen möchten.
quelle
Wenn Sie anhand der Antwort von @ oo arbeiten, erhalten Sie die Zeichenfolge des Datums gemäß einer Formatzeichenfolge zurück. Sie können ganz einfach einen zweistelligen Jahresregex für das Jahr und die Millisekunden und dergleichen hinzufügen, wenn Sie diese benötigen.
Ich weiß jedoch nicht, wie effizient das ist, besonders wenn es um Perfektion geht, da es viel Regex verwendet. Es könnte wahrscheinlich etwas Arbeit gebrauchen, die ich nicht beherrsche.
quelle
Dieser Code entspricht der Antwort von Pierre Guilbert:
(es funktioniert auch nach 10000 Jahren)
quelle
Es scheint, dass mootools Folgendes bietet
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateIch bin mir nicht sicher, ob es sich lohnt, nur für diese spezielle Aufgabe aufzunehmen.
quelle
Normalerweise verwende ich den folgenden Code, wenn ich dies tun muss.
Zur Erklärung gibt .slice (-2) die letzten beiden Zeichen der Zeichenfolge an.
Egal was passiert, wir können dem Tag oder Monat "0" hinzufügen und einfach nach den letzten beiden fragen, da dies immer die beiden sind, die wir wollen.
Wenn also MyDate.getMonth () 9 zurückgibt, ist dies:
Wenn Sie also .slice (-2) hinzufügen, erhalten Sie die letzten beiden Zeichen:
Wenn date.getMonth () jedoch 10 zurückgibt, ist dies:
Wenn Sie also .slice (-2) hinzufügen, erhalten Sie die letzten beiden Zeichen oder:
quelle
Wenn Sie AngularJs (bis zu 1,5) verwenden, können Sie den Datumsfilter verwenden :
quelle
Beantwortung eines anderen für Einfachheit und Lesbarkeit.
Es wird auch nicht empfohlen, vorhandene vordefinierte Klassenmitglieder mit neuen Methoden zu bearbeiten:
quelle
Wie wäre es mit Day.js ?
Es ist nur 2 KB, und Sie können auch
dayjs().format('YYYY-MM-DD')
.https://github.com/iamkun/dayjs
quelle
Wenn es Ihnen nichts ausmacht, eine zusätzliche (aber kleine) Bibliothek einzuschließen, bietet Sugar.js viele nützliche Funktionen für die Arbeit mit Datumsangaben in JavaScript. Verwenden Sie zum Formatieren eines Datums die Formatierungsfunktion :
quelle
quelle
Datums-Shortcode zur Rettung!
quelle
Verwenden Sie padStart :
quelle
Hier ist ein allgemeinerer Ansatz, der sowohl Datum als auch Uhrzeit zulässt Komponenten und ist identisch sortierbar entweder als Zahl oder ein String.
Konvertieren Sie basierend auf der Nummernreihenfolge des Datums-ISO-Formats in eine lokale Zeitzone und entfernen Sie nicht Ziffern. dh:
Verwendungszweck
quelle
Native Javascript:
quelle