Wie kann ich das aktuelle Datum in JavaScript abfragen?
Antworten
Zu viele Anzeigen?LETZTE ÄNDERUNG: 8/23/19 Die datum-fns Bibliothek funktioniert ähnlich wie moment.js hat aber eine WEGEN kleinere Grundfläche. Sie ermöglicht es Ihnen, die Funktionen auszuwählen, die Sie in Ihr Projekt aufnehmen möchten, so dass Sie nicht die gesamte Bibliothek kompilieren müssen, um das heutige Datum zu formatieren. Wenn eine minimale Bibliothek eines Drittanbieters für Ihr Projekt nicht in Frage kommt, empfehle ich die akzeptierte Lösung von Samuel Meddows weiter oben.
Die Geschichte zu bewahren, weil sie ein paar Leuten geholfen hat. Aber für das Protokoll ist es ziemlich hacky und wahrscheinlich ohne Vorwarnung zu brechen, wie die meisten der Lösungen auf diesem Beitrag sind
BEARBEITEN 2/7/2017 Eine einzeilige JS-Lösung:
tl;dr
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
edge, ff latest, & chrome return
todaysDate = "2/7/2017"
"funktioniert "* im IE10+
Erläuterung
Ich habe herausgefunden, dass IE10 und IE Edge die Dinge ein wenig anders machen. mit new Date(Date.now()).toLocaleString()
als Eingabe,
Der IE10 kehrt zurück:
"Tuesday, February 07, 2017 2:58:25 PM"
Ich könnte eine große, lange Funktion schreiben und FTFY. Aber sollten Sie wirklich verwenden moment.js für dieses Zeug. Mein Skript bereinigt dies lediglich und gibt Ihnen die erweitert traditionelle US-Notation: > todaysDate = "March 06, 2017"
IE EDGE kehrt zurück:
"2/7/2017 2:59:27 PM"
Natürlich kann das nicht so einfach sein. Die Datumszeichenfolge von Edge enthält unsichtbare "-"-Zeichen zwischen den einzelnen sichtbaren Zeichen. Es wird also nicht nur geprüft, ob das erste Zeichen eine Zahl ist, sondern auch die ersten drei Zeichen, da sich herausstellt, dass jedes einzelne Zeichen im gesamten Datumsbereich irgendwann ein Punkt oder ein Schrägstrich sein wird. Um die Dinge einfach zu halten, brauchen wir also nur .slice() die ersten drei Zeichen (winziger Puffer für künftige Spielereien) und prüfen dann auf Zahlen. Es sollte wohl beachtet werden, dass diese unsichtbaren Punkte möglicherweise in Ihrem Code bestehen bleiben könnten. Ich würde vielleicht graben in, dass, wenn Sie größere Pläne als nur Drucken dieser Zeichenfolge zu Ihrer Ansicht haben.
aktualisierter Einzeiler:
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
Das zu lesen ist ätzend. Wie wäre es mit:
var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
ORIGINALANTWORT
Ich habe einen Einzeiler für Sie:
new Date(Date.now()).toLocaleString().split(', ')[0];
y [1]
wird Ihnen die Uhrzeit mitteilen.
Ein einfacher Weg, dies zu erreichen (unter Berücksichtigung Ihrer aktuellen Zeitzone und unter Ausnutzung des ISO-Formats yyyy-mm-dd), ist folgender:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Normalerweise ist dies ein ziemlich universelles kompatibles Datumsformat, das Sie bei Bedarf in einen reinen Datumswert umwandeln können:
Date.parse(d); // 1582044297000
Das können Sie hier nachlesen
var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);
Und siehe die Dokumentation für den Date()-Konstruktor. Link
Wenn Sie bei "aktuelles Datum" an "heute" denken, dann könnte dieser Trick für Sie funktionieren:
> new Date(3600000*Math.floor(Date.now()/3600000))
2020-05-07T07:00:00.000Z
Auf diese Weise erhalten Sie heute Datum Instanz mit der Zeit 0:00:00.
Das Funktionsprinzip ist sehr einfach: Wir nehmen den aktuellen Zeitstempel und teilen ihn durch 1 Tag, ausgedrückt in Millisekunden. Wir erhalten einen Bruchteil. Durch die Verwendung von Math.floor wird der Bruch entfernt, und wir erhalten eine ganze Zahl. Multipliziert man diesen Wert nun wieder mit einem Tag (wiederum in Millisekunden), erhält man einen Datumszeitstempel mit der exakten Uhrzeit des Tagesbeginns.
> now = Date.now()
1588837459929
> daysInMs = now/3600000
441343.73886916664
> justDays = Math.floor(daysInMs)
441343
> today = justDays*3600000
1588834800000
> new Date(today)
2020-05-07T07:00:00.000Z
Sauber und einfach.
474 Stimmen
var currentTime = new Date();
18 Stimmen
Siehe die Dokumentation für das Date-Objekt . Sie enthält Beispiele.
5 Stimmen
Dies würde Ihnen helfen tizag.com/javascriptT/javascriptdate.php
37 Stimmen
new Date()
gibt die aktuelle Zeit und nicht die aktuelle Datum . Die Unterscheidung ist wichtig, wenn Sie versuchen, es mit einem anderen Datum zu vergleichen, das keine Zeitkomponente hat (d.h. um Mitternacht ist).16 Stimmen
Verwenden Sie momentJs, diese Bibliothek ist Gold wert für Entwickler.
5 Stimmen
@SteveBennett Eigentlich gibt es das aktuelle Datum zurück. y Zeit. JavaScript hat keine separaten Objekte, um einen reinen Datumswert oder einen reinen Zeitwert darzustellen. Es hat nur
Date
die beides beinhaltet. Auch wenn die Frage nicht ganz klar ist, besteht die erwartete Antwort darin, das aktuelle Systemdatum und die aktuelle Uhrzeit zu erhalten, was genau das ist, wasnew Date()
zurück, also +1 an @Hendrik für die prägnanteste Antwort.0 Stimmen
Siehe diesen Beitrag : stackoverflow.com/a/30245911/1579667
0 Stimmen
Ich bin überrascht, dass ich keinen Kommentar über die großartige date-fns-Bibliothek gesehen habe. Modular (importieren Sie einfach, was Sie brauchen), behandelt Termine als unveränderlich, arbeiten mit nativen Date-Objekte, schneller als Moment.
3 Stimmen
Ihre Frage ist sehr weit gefasst! Möchten Sie eine Zeichenkette (einfach) oder ein Datumsobjekt (Fallen)? Wollen Sie das aktuelle Datum dort, wo Sie sind, oder in London, oder woanders? BEACHTEN SIE DIE ZEITZONE
2 Stimmen
New Date() ist immer noch gültig und die beste Antwort, aber danach kommt die Notwendigkeit eines bestimmten Formats auf und ich würde vorschlagen, toLocaleDateString mit new Date zu verwenden, z. B.
new Date().toLocaleDateString('en-GB', {year: "numeric", month: "2-digit", day: "2-digit"})
was am Ende ein formatiertes aktuelles Datum in diesem Format 08/06/2021 ergibt.0 Stimmen
Luxon ist eine moderne Bibliothek von einem der momentjs-Entwickler. Wirklich schöne Schnittstelle und APIs!