Wie kann ich in JavaScript eine Zeichenkette in ein Datumsobjekt umwandeln?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
Wie kann ich in JavaScript eine Zeichenkette in ein Datumsobjekt umwandeln?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
Das beste String-Format für das Parsen von Strings ist das ISO-Datumsformat in Verbindung mit dem JavaScript-Date-Objektkonstruktor.
Beispiele für das ISO-Format: YYYY-MM-DD
ou YYYY-MM-DDTHH:MM:SS
.
Doch halt! Die Verwendung des "ISO-Formats" allein funktioniert nicht zuverlässig. Zeichenfolgen werden manchmal als UTC und manchmal als Ortszeit geparst (je nach Browserhersteller und -version). Die beste Praxis sollte immer sein, Daten als UTC zu speichern und Berechnungen als UTC durchzuführen.
Um ein Datum als UTC zu parsen, fügen Sie ein Z - z.B.: new Date('2011-04-11T10:20:30Z')
.
Um ein Datum in UTC anzuzeigen, verwenden Sie .toUTCString()
,
um ein Datum in der Ortszeit des Benutzers anzuzeigen, verwenden Sie .toString()
.
Mehr Informationen über MDN | Datum y diese Antwort .
Um die Kompatibilität mit dem alten Internet Explorer zu gewährleisten (IE-Versionen kleiner als 9 unterstützen das ISO-Format im Date-Konstruktor nicht), sollten Sie die Datetime-String-Darstellung in ihre Bestandteile zerlegen und dann den Konstruktor mit den Datetime-Teilen verwenden, z. B: new Date('2011', '04' - 1, '11', '11', '51', '00')
. Beachten Sie, dass die Zahl des Monats um 1 kleiner sein muss.
Alternative Methode: Verwendung einer geeigneten Bibliothek:
Sie können auch die Vorteile der Bibliothek nutzen Moment.js die das Parsen von Daten mit der angegebenen Zeitzone ermöglicht.
Leider musste ich feststellen, dass
var mydate = new Date('2014-04-03');
console.log(mydate.toDateString());
gibt "Wed Apr 02 2014" zurück. Ich weiß, es hört sich verrückt an, aber es passiert bei einigen Benutzern.
El kugelsichere Lösung ist die folgende:
var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
console.log(mydate.toDateString());
function stringToDate(_date,_format,_delimiter)
{
var formatLowerCase=_format.toLowerCase();
var formatItems=formatLowerCase.split(_delimiter);
var dateItems=_date.split(_delimiter);
var monthIndex=formatItems.indexOf("mm");
var dayIndex=formatItems.indexOf("dd");
var yearIndex=formatItems.indexOf("yyyy");
var month=parseInt(dateItems[monthIndex]);
month-=1;
var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]);
return formatedDate;
}
stringToDate("17/9/2014","dd/MM/yyyy","/");
stringToDate("9/17/2014","mm/dd/yyyy","/")
stringToDate("9-17-2014","mm-dd-yyyy","-")
Empfehlung: Ich empfehle, ein Paket für Daten zu verwenden, das viele Formate enthält, da die Verwaltung von Zeitzonen und Zeitformaten wirklich ein großes Problem ist, und Moment Js löst viele Formate. Sie könnten leicht Datum von einem einfachen String zu Datum parsen, aber ich denke, das ist eine harte Arbeit, alle Formate und Variationen von Daten zu unterstützen.
Aktualisierung: Moment ist jetzt veraltet Eine gute Alternative für den Moment ist datefns https://date-fns.org/
moment.js ( http://momentjs.com/ ) ist ein komplettes und gutes Paket für Nutzungsdaten und unterstützt ISO 8601 Zeichenfolgen .
Sie können eine Zeichenkette Datum und Format hinzufügen.
moment("12-25-1995", "MM-DD-YYYY");
Und Sie könnten prüfen, ob ein Datum gültig ist.
moment("not a real date").isValid(); //Returns false
Einige Beispiele anzeigen
let dt = moment("02-01-2019", "MM-DD-YYYY");
console.log(dt.fromNow()+' |'+dt.format('LL'))
// output: "3 months ago | February 1, 2019"
Siehe Dokumentation http://momentjs.com/docs/#/parsing/string-format/
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.