Ich versuche, eine Zeichenfolge im Format TT-MM-JJJJ in ein Datumsobjekt in JavaScript zu konvertieren, indem ich Folgendes verwende:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
("#datepicker").val()
enthält ein Datum im Format TT-MM-JJJJ. Wenn ich Folgendes mache, erhalte ich "Ungültiges Datum":
alert(f);
Liegt das am '-' Symbol? Wie kann ich das überwinden?
javascript
date
user559142
quelle
quelle
Antworten:
Aufgeteilt auf "-"
Analysieren Sie den String in die Teile, die Sie benötigen:
Verwenden Sie Regex
Warum nicht Regex verwenden?
Weil Sie wissen, dass Sie an einer Zeichenfolge arbeiten, die aus drei Teilen besteht, die durch Bindestriche getrennt sind.
Wenn Sie jedoch nach derselben Zeichenfolge in einer anderen Zeichenfolge suchen, ist Regex der richtige Weg.
Wiederverwendung
Da Sie dies mehr als einmal in Ihrem Beispielcode und möglicherweise an anderer Stelle in Ihrer Codebasis tun, schließen Sie es in eine Funktion ein:
Verwenden als:
Oder wenn Ihnen jQuery in Ihrer Funktion nichts ausmacht:
Verwenden als:
Modernes JavaScript
Wenn Sie moderneres JS verwenden können, ist die Array-Destrukturierung auch eine nette Geste:
quelle
Beispiel für einen regulären Ausdruck:
quelle
/
ist Trennzeichen und ein Jahr aus 2 Ziffern (oder einer Zählung größer als 1):replace( /(\d{2})[-/](\d{2})[-/](\d+)/, "$2/$1/$3")
new Date( "23. 2. 15".replace( /(\d+)[^d]+(\d+)[^d]+(\d+)/, "$2/$1/$3") );
Andere Möglichkeit:
Passen Sie die Ziffern an und ordnen Sie sie neu
quelle
var date = new Date(numbers[2], numbers[1]-1, numbers[0]);
Verwenden Sie das Beispiel von moment.j :
quelle
quelle
$.datepicker.parseDate("dd-mm-yy", from);
, um ein Datum wie die24-01-2017
Check Datepicker-Dokumentation unter api.jqueryui.com/datepickerSie können auch ein Datum in die Klammern des
Date()
Objekts schreiben , wie folgt:quelle
Verwenden Sie dieses Format:
myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
quelle
parseDate
Funktion? Ist das eine native Javascript-Funktion?'2011-01-03'
und die UTC-Zeit auf00:00:00
. Wenn die Zeitzone des Benutzers kleiner als UTC ist, ist dies tatsächlich der Tag zuvor.In meinem Fall
Ergebnis: Mon Nov 02 2015 04:40:13 GMT + 0100 (CET) dann verwende ich .getTime (), um mit Millisekunden zu arbeiten
quelle
Die akzeptierte Antwort hat einen Fehler
Überlegen Sie, ob der Datepicker "77-78-7980" enthält, was offensichtlich kein gültiges Datum ist. Dies würde führen zu:
Welches ist wahrscheinlich nicht das gewünschte Ergebnis.
Der Grund hierfür wird auf der MDN- Site erläutert :
Ein besserer Weg, um das Problem zu lösen, ist:
Dies gibt Ihnen die Möglichkeit, ungültige Eingaben zu verarbeiten.
Beispielsweise:
quelle
Sie können eine externe Bibliothek verwenden, um Ihnen zu helfen.
http://www.mattkruse.com/javascript/date/source.html
Siehe auch Folgendes : Parse DateTime-Zeichenfolge in JavaScript
quelle
Werfen Sie einen Blick auf Datejs für all diese kleinen datumsbezogenen Probleme. Sie können dies auch mit der Funktion parseDate lösen
quelle
Sie könnten einen Regexp verwenden.
quelle
Übergeben Sie einfach Ihr Datum an js Date Object
quelle
new Date('30/12/2018').toLocaleDateString()
folgt zu übergeben? Das gibt ungültiges Datum zurück