Wie kann ich eine Zeichenfolge in ein Datums- / Uhrzeitobjekt in Javascript konvertieren, indem ich eine Formatzeichenfolge angeben?
Ich suche so etwas wie:
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
javascript
datetime
type-conversion
Serhat Ozgel
quelle
quelle
Antworten:
Ich denke, das kann Ihnen helfen: http://www.mattkruse.com/javascript/date/
Es gibt eine
getDateFromFormat()
Funktion, die Sie ein wenig optimieren können, um Ihr Problem zu lösen.Update: Eine aktualisierte Version der Beispiele finden Sie unter javascripttoolbox.com
quelle
TypeError: Object Date has no method 'getDateFromFormat'
Verwenden Sie diese Option, wenn Ihre Zeichenfolge mit kompatibel ist . Wenn Ihr Format nicht kompatibel ist (ich denke es ist), müssen Sie die Zeichenfolge selbst analysieren (sollte mit regulären Ausdrücken einfach sein) und ein neues Datumsobjekt mit expliziten Werten für Jahr, Monat, Datum, Stunde, Minute und Sekunde erstellen .
new Date(dateString)
Date.parse()
quelle
@Christoph Erwähnt die Verwendung eines regulären Ausdrucks, um das Problem anzugehen. Folgendes verwende ich:
Es ist keineswegs intelligent, konfigurieren Sie einfach den regulären Ausdruck und
new Date(blah)
passen Sie ihn Ihren Anforderungen an.Bearbeiten: Vielleicht etwas verständlicher in ES6 mit Destrukturierung:
Aber ehrlich gesagt greife ich heutzutage nach etwas wie Moment
quelle
/g
Flagge, umlastIndex
sie0
danach zu setzen ? Verwenden Sie einfach keine globale Übereinstimmung./g
war ein schlampiges Kopieren / Einfügen aus einem vorhandenen Projekt.lastindex
wurde von einem Editor hinzugefügt (um das zu bekämpfen,\g
nehme ich an?). Ich werde sie jetzt entfernen. Vielen Dank für den Hinweis.In JavaScript gibt es keine ausgeklügelten Formatierungsroutinen für Datum und Uhrzeit.
Sie müssen eine externe Bibliothek für die formatierte Datumsausgabe verwenden. "JavaScript Date Format" von Flagrant Badassery sieht sehr vielversprechend aus.
Für die Eingabekonvertierung wurden bereits mehrere Vorschläge gemacht. :) :)
quelle
Schauen Sie sich Moment.js an . Es ist eine moderne und leistungsstarke Bibliothek, die die traurigen Datumsfunktionen von JavaScript (oder deren Fehlen) ausgleicht.
quelle
Nur für eine aktualisierte Antwort hier gibt es eine gute js lib unter http://www.datejs.com/
quelle
quelle
Die externe Bibliothek ist ein Overkill für das Parsen von ein oder zwei Daten, daher habe ich meine eigene Funktion mit den Lösungen von Oli und Christoph erstellt . Hier in Mitteleuropa verwenden wir selten etwas anderes als das OP-Format, daher sollte dies für einfache Apps ausreichen, die hier verwendet werden.
quelle
Date.parse()
ist ziemlich intelligent, aber ich kann nicht garantieren, dass das Format korrekt analysiert wird.Wenn nicht, müssten Sie etwas finden, um die beiden zu überbrücken. Ihr Beispiel ist ziemlich einfach (es handelt sich nur um Zahlen), sodass Sie mit einem Hauch von REGEX (oder sogar
string.split()
- möglicherweise schneller) in Kombination mit einigenparseInt()
schnell ein Datum festlegen können .quelle
quelle
Nur um meine 5 Cent zu geben.
Mein Datumsformat ist TT.MM.JJJJ (UK-Format) und keines der oben genannten Beispiele hat für mich funktioniert. Alle Parser betrachteten mm als Tag und dd als Monat.
Ich habe diese Bibliothek gefunden: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ und es hat funktioniert, weil Sie die Reihenfolge der Felder wie folgt sagen können:
Ich hoffe das hilft jemandem.
quelle
Moment.js wird dies erledigen:
quelle
Sie können hierfür die Bibliothek moment.js verwenden. Ich verwende nur, um eine zeitspezifische Ausgabe zu erhalten, aber Sie können auswählen, welche Art von Format Sie auswählen möchten.
Referenz:
1. Moment Bibliothek: https://momentjs.com/
2. Zeit- und datumsspezifische Funktionen: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in-javascript
und Sie können diese Methode wie folgt aufrufen:
Ich hoffe, es hilft. Viel Spaß beim Codieren.
quelle
Wenn Sie die Konjunkturzeichenfolge Date.parse vollständig in das Format TT-MM-JJJJ wie in RFC822 angegeben konvertieren, kann es zu Fehlern kommen, wenn Sie die Analyse JJJJ-MM-TT verwenden.
quelle
quelle