Wie kann ich das aktuelle Datum in JavaScript abfragen?
Antworten
Zu viele Anzeigen?TL;DR
Die meisten der hier gefundenen Antworten sind richtig nur wenn Sie die aktuelle Zeit auf Ihrem lokalen Rechner (Client) benötigen, eine Quelle, die oft nicht als zuverlässig angesehen werden kann (sie wird wahrscheinlich von einem anderen System abweichen).
Zuverlässige Quellen sind:
- Uhr des Webservers (aber stellen Sie sicher, dass sie auf dem neuesten Stand ist)
- Zeit-APIs & CDNs
Einzelheiten
Eine Methode, die auf der Date
Instanz einen Wert zurück, der auf der lokalen Zeit Ihres Rechners basiert.
Weitere Einzelheiten finden Sie in den "MDN web docs": JavaScript-Datum-Objekt .
Zu Ihrer Erleichterung habe ich einen entsprechenden Hinweis aus den Dokumenten des Unternehmens hinzugefügt:
(...) die grundlegenden Methoden zum Abrufen von Datum und Uhrzeit oder deren Komponenten arbeiten alle in der lokalen (d.h. Host-System) Zeitzone und im Offset.
Eine weitere Quelle, die dies erwähnt, ist: JavaScript-Objekt für Datum und Uhrzeit
Es ist wichtig zu beachten, dass das Datumsobjekt eine andere Zeit als auf Ihrem eigenen Computer erzeugt, wenn die Uhr einer anderen Person um ein paar Stunden abweicht oder sie sich in einer anderen Zeitzone befindet.
Einige zuverlässige Quellen, die Sie nutzen können, sind:
- Die Uhr Ihres Webservers (überprüfen Sie zunächst, ob sie richtig eingestellt ist)
- Zeit-APIs und CDNs:
Aber wenn die Genauigkeit für Ihren Anwendungsfall nicht wichtig ist, oder wenn Sie einfach das Datum relativ zur Zeit des lokalen Rechners benötigen, können Sie sicher Javascript's Date
grundlegende Methoden wie Date.now()
.
Ich glaube, die Frage ist alt, aber der einfachste Weg wäre der folgende:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Damit wird die aktuelle Zeit erfasst, an einen String übergeben, der auf dem Standort basiert, und dann können Sie die Funktion CurrentTime aufrufen, um die Zeit anzuzeigen. Dies wäre für mich der effektivste Weg, um einen Zeitstempel für etwas zu erhalten.
Dies ist mein derzeitiger Favorit, weil er sowohl flexibel als auch modular ist. Es ist eine Sammlung von (mindestens) drei einfachen Funktionen:
/**
* Returns an array with date / time information
* Starts with year at index 0 up to index 6 for milliseconds
*
* @param {Date} date date object. If falsy, will take current time.
* @returns {[]}
*/
getDateArray = function(date) {
date = date || new Date();
return [
date.getFullYear(),
exports.pad(date.getMonth()+1, 2),
exports.pad(date.getDate(), 2),
exports.pad(date.getHours(), 2),
exports.pad(date.getMinutes(), 2),
exports.pad(date.getSeconds(), 2),
exports.pad(date.getMilliseconds(), 2)
];
};
Hier ist die Funktion des Pads:
/**
* Pad a number with n digits
*
* @param {number} number number to pad
* @param {number} digits number of total digits
* @returns {string}
*/
exports.pad = function pad(number, digits) {
return new Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
};
Schließlich kann ich meine Datumszeichenfolge entweder von Hand erstellen oder eine einfache Funktion verwenden, um dies für mich zu tun:
/**
* Returns nicely formatted date-time
* @example 2015-02-10 16:01:12
*
* @param {object} date
* @returns {string}
*/
exports.niceDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + ' ' + d[3] + ':' + d[4] + ':' + d[5];
};
/**
* Returns a formatted date-time, optimized for machines
* @example 2015-02-10_16-00-08
*
* @param {object} date
* @returns {string}
*/
exports.roboDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + '_' + d[3] + '-' + d[4] + '-' + d[5];
};
Die Grundlagen
Wenn Sie mit dem Format zufrieden sind Sun Jan 24 2016 21:23:07 GMT+0100 (CET)
können Sie einfach diesen Code verwenden:
var today = new Date();
Date.prototype.toLocaleDateString()
Wenn Sie Ihre Ausgabe formatieren möchten, sollten Sie Folgendes verwenden Date.prototype.toLocaleDateString()
:
var today = new Date().toLocaleDateString('de-DE', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
Wenn Sie diesen Code heute (24. Januar 2016) in einem modernen Browser ausführen würden, würde er die Zeichenfolge Sonntag, 24. Januar 2016
. Ältere Browser können jedoch ein anderes Ergebnis liefern, da z. B. IE<11 keine Gebietsschemata oder Optionsargumente unterstützt.
Benutzerdefiniert gehen
Si Date.prototype.toLocaleDateString()
nicht flexibel genug ist, um Ihren Anforderungen gerecht zu werden, sollten Sie in Erwägung ziehen, ein benutzerdefiniertes Datumsobjekt zu erstellen, das wie folgt aussieht:
var DateObject = (function() {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var date = function(str) {
this.set(str);
};
date.prototype = {
set : function(str) {
var dateDef = str ? new Date(str) : new Date();
this.day = dateDef.getDate();
this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
this.month = dateDef.getMonth() + 1;
this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
this.monthName = monthNames[this.month - 1];
this.year = dateDef.getFullYear();
}
};
return date;
})();
Wenn Sie diesen Code einschließen und Folgendes ausführen new DateObject()
Heute (24. Januar 2016) würde es ein Objekt mit den folgenden Eigenschaften erzeugen:
day: 24
dayPadded: "24"
month: 1
monthPadded: "01"
monthName: "January"
year: 2016
Wenn Sie eine viel genauere Kontrolle über die Datumsformate wünschen, empfehle ich Ihnen einen Blick auf Datum-FNS .
Sie ist eine großartige Bibliothek und viel kleiner als die Moment.js . Es ist ein funktionsbasierter Ansatz, der es viel schneller macht als andere klassenbasierte Bibliotheken. Sie bietet eine große Anzahl von Operationen, die für Daten benötigt werden.
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!