Eine Zeichenkette in ein Datum in JavaScript umwandeln
-
Verwendung von die Funktion
new Date()
zum Konvertieren von String in ein Datum in JavaScript -
Verwendung von die Funktion
Date.parse()
zum einen String in JavaScript in ein Datum zu konvertieren - String aufteilen und in JavaScript in ein Datum umwandeln
- Fazit
Manchmal ist es erforderlich, eine Zeichenkette in ein Datumsformat zu konvertieren. Die Zeichenkette kann ein Datumswert sein, der als Zeichenkette in der Datenbank gespeichert ist, oder ein von der API zurückgegebener Wert. In beiden Fällen kann dieser Zeichenkettenwert nicht direkt in der Datumsauswahl oder im Datum des Eingabetyps verwendet werden. Daher muss die Zeichenkette in ein Datumsobjekt konvertiert werden, um in der HTML-Benutzeroberfläche angezeigt zu werden. Da es sich um ein Zeichenkettenformat handelt, können keine datumsspezifischen Vorgänge ausgeführt werden. Daher müssen wir die Zeichenkette in ein Datumsobjekt konvertieren. Hier sind einige Möglichkeiten aufgeführt, wie Sie eine Zeichenkette in ein Datum konvertieren können:
new Date()
Date.parse()
- Teilen und in Datum konvertieren
Verwendung von die Funktion new Date()
zum Konvertieren von String in ein Datum in JavaScript
Die am häufigsten verwendete Methode zum Konvertieren einer Zeichenkette in ein Datum ist die Funktion new Date()
. new Date()
akzeptiert Argumente in verschiedenen unten beschriebenen Formen, gibt jedoch ein Datumsobjekt zurück.
- Keine Parameter als Argument.
new Date()
gibt das aktuelle Systemdatum und die aktuelle Systemzeit einschließlich der Zeitzoneninformationen in der lokalen Systemzeit zurück, wenn kein Parameter an die Funktionnew Date()
übergeben wird. - Datumsobjekt als Argument übergeben. Das
new Date()
gibt ein Datumsobjekt zurück, wie durch die als Argument übergebene DatumsZeichenkette dargestellt. - Übergeben eines Zeichenkettendatums. Der interessanteste Teil der Funktion
new Date('2018-12-3')
besteht darin, dass ein in einem Zeichenkettenformat als Argument übergebenes Datum in ein Datumsformat konvertiert werden kann. Wir werden dies im Detail diskutieren.
Übergeben des String-Datums als Argument
Wenn wir ein Datum im Zeichenkettenformat an das new Date()
übergeben, wird es in ein Datumsobjekt konvertiert. Das Zeichenkettenformat muss YYYY-MM-DD
sein, das Format ISO 8601, damit es funktioniert. Andere Datumsformate können mit dieser Methode möglicherweise nicht in ein Datumsobjekt konvertiert werden. Beziehen Sie sich beispielsweise wie folgt auf den Code:
new Date('2021-05-23');
new Date('2020/2/29');
new Date('2020-14-03');
new Date('14-02-2021');
Ausgabe:
Sun May 23 2021 05:30:00 GMT+0530 (India Standard Time)
Sat Feb 29 2020 00:00:00 GMT+0530 (India Standard Time)
Invalid Date
Invalid Date
Wie Sie den obigen Beispielen entnehmen können, ist das einzige akzeptierte Zeichenkettenformat für das Datum 2021-05-23
und 2020/2/29
. Die Funktion new Date()
kann Zeichenketten im Format YYYY-MM-DD
oder YYYY/MM/DD
verarbeiten. Wenn wir ein anderes Zeichenkettenformat haben, das nicht den ISO 8601-Standards entspricht, kann das new Date()
das Datum nicht analysieren und wird als Invalid date
zurückgegeben.
Bemerkungen
new Date()
kann nur verwendet werden, um die Zeichenkette in ein Datum umzuwandeln, wenn das ISO 8601-FormatYYYY-MM-DD hh:mm:ss
qualifiziert ist.- Für ein anderes Format, das von
new Date()
nicht verstanden werden kann, ist es besser, die Zeichenkette zu teilen und sie als Argumente an dasnew Date()
zu übergeben, wie später in diesem Artikel vorgestellt wird. new Date()
kann auch eine Zeichenkette des Formats01 Mar 2020 12:30
oder sogarMM DD YYYY HH:mm
konvertieren. Wenn wir einen Wert verwenden, der vom Backend über die API für die Konvertierung übergeben wurde, sollten wir sicherstellen, dass das übergebene Format der Funktionnew Date()
entspricht, und es ist gut, eine Prüfung zu haben, dassnew Date()
ein gültiges Datumsobjekt zurückgibt. Andernfalls kann der Code abbrechen.
Verwendung von die Funktion Date.parse()
zum einen String in JavaScript in ein Datum zu konvertieren
Date.parse()
ist eine alternative Option zum Konvertieren des String-Datums. Es wird ein numerischer Wert anstelle eines Datumsobjekts zurückgegeben. Daher ist eine weitere Verarbeitung erforderlich, wenn Sie ein Datumsobjekt erwarten. Das analysierte Datum wird in eine Zahl konvertiert, die die Millisekunden darstellt, die seit dem 1. Januar 1970 um Mitternacht vergangen sind. Es ähnelt dem Zeitstempelformat mit dem Unterschied, dass Date.parse()
anstelle von Sekunden einen Millisekundenwert zurückgibt.
Date.parse('2020-11-21')
Date.parse('2019-01-01T12:30:00.000Z')
Date.parse('20-11-2021')
Date.parse('11-20-2021')
Ausgabe:
1605916800000
1546345800000
NaN
1637346600000
Es ist anzumerken, dass Date.parse()
in Bezug auf die Art der Eingabewerte, die akzeptiert werden können, mit new Date()
identisch ist, jedoch eine bessere Handprüfung bietet, wenn das Datum ein gültiges Format hat. Eine solche Methode ist praktisch, insbesondere wenn es sich um einen API-Antwortwert handelt. In solchen Fällen müssen wir möglicherweise eine Überprüfung durchführen, um sicherzustellen, dass der vom Backend zurückgegebene Wert dem von der Funktion Date.parse()
oder sogar der Funktion new Date()
akzeptierten Datumsformat entspricht. Nur eine isNaN()
-Prüfung kann helfen, die Datumskonvertierungsmethode zu identifizieren und sicher zu landen.
let stringsFromAPI = ['2020-11-21', '20-11-2021'];
stringsFromAPI.forEach((d) => {
if (!isNaN(Date.parse(d))) {
console.log(new Date(d));
}
})
Ausgabe:
Sat Nov 21 2020 05:30:00 GMT+0530 (India Standard Time)
Beachten Sie, dass hier das Datum 20-11-2021
das Format DD-MM-YYYY
hat. Daher wird es weder von der Funktion Date.parse()
noch von der Funktion new Date()
verstanden. Wenn also stringsFromAPI
ein Wert aus dem Backend war, konvertiert die obige Funktion nur die Daten, die dem akzeptablen Format entsprechen. Das !isNaN(Date.parse(d))
lehnt den falschen Datumswert stillschweigend ab und protokolliert den Wert, dessen Konvertierung erfolgreich war.
Bemerkungen
Date.parse()
ähnelt demnew Date()
mit Ausnahme des Rückgabetyps, mit dem überprüft werden kann, ob ein Datumswert das richtige Format hat, und kann auch zum Zuweisen eines Datums verwendet werden diedateObj.setTime(Date.parse(DateString))
.- Im Vergleich zum Unix-Zeitstempel gibt
Date.parse()
Millisekunden zurück, die zum präzisen Vergleich von Datumsangaben verwendet werden können, auch ohne sie mitnew Date()
in tatsächliche Datumsobjekte umzuwandeln. Date.parse()
verwendet intern dasnew Date()
zum Parsen des Datums. Daher werden die von der Funktionnew Date()
akzeptierten Formate auch in der FunktionDate.parse()
unterstützt.
String aufteilen und in JavaScript in ein Datum umwandeln
Sowohl die Funktionen Date.parse()
als auch die Funktionen new Date()
basieren auf dem erweiterten Datumsformat ISO 8601. Wenn das Datum nicht dem erwarteten Format entspricht, müssen wir es manchmal manuell berechnen, indem wir die DatumsZeichenkette teilen, die Werte extrahieren und sie in ein Datumsobjekt konvertieren. Überraschenderweise unterstützt das new Date()
auch die Datumsparameter, die als Argumente übergeben werden, und wir erhalten das Datumsobjekt als Ausgabe.
Die Syntax zum Erstellen eines Datums aus Argumenten:
new Date(yearValue, IndexOfMonth, dayValue, hours, minutes, seconds)
Wo,
yearValue
: Sollte dem Format ISO 8061 JJJJ entsprechen. Zum Beispiel 2021. Wenn wir einen Wert im FormatYY
angeben, wird er falsch verwendet. Wenn Sie beispielsweise nur 21 für2021
erwähnen, wird dies als 1921 anstelle von 2021 angenommen.IndexOfMonth
: Beginnt mit dem Index 0. Subtrahieren Sie daher 1 vom Monatswert. Für März ist der Wert beispielsweise 3, abermonthIndex
ist 2 (d. H. 3-1 = 2). Der Index des Monats sollte normalerweise im Bereich0-11
liegendayValue
: Zeigt den Tag des Monats an. Sie sollte im Bereich von 1 bis 31 liegen, abhängig von der Anzahl der Tage in einem Monat. Beispiel: Für den 21-05-2021 beträgt der Tageswert 21hours
: Die Stunde des Tages. Zum Beispiel 10 Uhr.minutes
: Die Minuten nach einer Stunde.seconds
: Hält den Wert der Sekunde nach einer Minute.
Die folgende Funktion verwendet eine Zeichenkette mit einem benutzerdefinierten Datumsformat - DD-MM-YYYYTHH:mm:SS
und gibt ein Datumsobjekt zurück.
function convertFromStringToDate(responseDate) {
let dateComponents = responseDate.split('T');
let datePieces = dateComponents[0].split('-');
let timePieces = dateComponents[1].split(':');
return (new Date(
datePieces[2], (datePieces[1] - 1), datePieces[0], timePieces[0],
timePieces[1], timePieces[2]))
}
convertFromStringToDate('21-03-2020T11:20:30')
Ausgabe:
Sat Mar 21 2020 11:20:30 GMT+0530 (India Standard Time)
Fazit
Die am häufigsten verwendete Funktion new Date()
ist sehr nützlich, um ein Zeichenkettendatum in ein Datumsobjekt zu konvertieren, vorausgesetzt, die Zeichenkette entspricht dem ISO 8601-Format. Im Vergleich zum new Date()
unterscheidet sich die Funktion Date.parse()
dadurch, dass sie einen numerischen Wert zurückgibt, der die Millisekunden seit dem 1. Januar 1970 enthält, die bis zum als Zeichenkettenargument übergebenen Datum vergangen sind. Ein anderes Datumsformat kann konvertiert werden, indem die DatumsZeichenkette aufgeteilt und die Datumskomponenten als Argumente an die Funktion new Date()
übergeben werden.