Analysieren Sie die DateTime-Zeichenfolge in JavaScript


Antworten:


140

Sehen:

Code:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

8
Hoppla ... ein bisschen boo-boo - der Datumskonstruktor sieht tatsächlich so aus: neues Datum (Jahr, Monat, Datum [, Stunde, Minute, Sekunde, Millisekunde]), sodass Sie die Reihenfolge der dateParts im Konstruktor ändern müssen.
Salman A

6
Noch ein Boo-Boo. Der JavaScript-Datumskonstruktor ist seltsam im Umgang mit Monaten. 0 bedeutet Januar, 1 Februar usw. Die Zeile im obigen Code sollte folgendermaßen aussehen: var date = new Date (dateParts [2], dateParts [1] - 1, dateParts [0]);
Elias Zamaria

1
@ Mikez302, du hast recht. Die verknüpfte MDC-Referenz weist ebenfalls darauf hin. Code behoben
Jonathan Fingland

mmm, aber wie kann man überprüfen, ob strDate einen ungültigen Wert wie "30.30.2000" hat?
Dr. Nr.

2
@ user674887, Sie können die Werte nach dem Parsen vergleichen. zB dateParts [1] -1 == date.getMonth ()
Jonathan Fingland

51

Wenn Sie die jQuery-Benutzeroberfläche verwenden, können Sie jedes Datum formatieren mit:

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/


21
+1 Ich sehe nicht, dass JavaScript und JQuery eine häufige Kombination sind.
DJNA

Eine Antwort sollte nicht auf einer Bibliothek beruhen, die nicht markiert oder im OP erwähnt wird. Die Verwendung von jQuery als Datumsbibliothek ist ein gewaltiger Overkill, wenn eine dreizeilige Funktion denselben Job ausführen kann.
RobG

9

Wir verwenden diesen Code, um zu überprüfen, ob die Zeichenfolge ein gültiges Datum ist

var dt = new Date(txtDate.value)
if (isNaN(dt))

Das angegebene Format stimmt nicht mit dem von developer.mozilla.org/en/Core_JavaScript_1.5_Reference/… geforderten Format überein (und daher reicht dieser Date-Konstruktor nicht aus)
Jonathan Fingland,

Das testet überhaupt nicht auf gültige Daten, sondern nur, ob der Datumskonstruktor aus der Eingabe ein gültiges Datum erstellen kann. Die beiden sind nicht dasselbe.
RobG

6

Refs: http://momentjs.com/docs/#/parsing/string/

Wenn Sie moment.js verwenden, können Sie den Modus "Zeichenfolge" + "Format" verwenden

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

Ex:

moment("12-25-1995", "MM-DD-YYYY");

2
In den meisten Fällen ist MomentJS ein Overkill, da für die Verwendung von reinem JavaScript nur Hunderte von Bytes erforderlich sind, während MomentJS 12,4 KB komprimiert ist. Praktisch für Entwickler, verlangsamt aber die Website. Lohnt sich nicht.
Raptor

3

Ich habe folgenden Code im IE verwendet. (IE8 kompatibel)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );


2

Datumsobjekt verwenden:

var time = Date.parse('02.02.1999');
document.writeln(time);

Geben Sie: 917902800000


16
new Date(Date.parse('02.02.1999'))
Duke

+1 Für Herzog Kommentare zu new Date(Date.parse('02.02.1999'))Javascript
Jack

Gibt NaN in mindestens zwei aktuellen Browsern zurück. Siehe Warum liefert Date.parse falsche Ergebnisse?
RobG

@ Duke - new Date(Date.parse('02.02.1999'))führt zu identischen Ergebnissen wie new Date('02.02.1999'), einschließlich ungültigem Datum in einigen Browsern. Die Verwendung des integrierten Parsers ist wohl die schlechteste Methode, um einen Zeitstempel zu analysieren.
RobG

2

Diese Funktion behandelt auch das ungültige Datum 29.2.2001.

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}

0

Sie können das Datum formatieren, indem Sie nur diesen Codetyp erstellen. In Javascript.

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)

Sie sollten Javascript verwenden, nicht JQuery, da es kein JQuery-Tag gibt
Sagar

glücklich ... bedeutet, nur das Senario zu verstehen
Bachas

Gut. Ich glaube nicht, dass Ihr Beispiel anders ist als das von Martin Staufcik. Tatsächlich hat seine Antwort eine zusätzliche Logik, um ungültige Daten zu behandeln.
Sagar

Martin Staufcik behandelt die Bedingungen, die im Allgemeinen nicht auftreten. Kannst du mir einen Kalender geben, der ungültig machen kann? Warum sollten wir so langen Code schreiben, wenn wir es kurz haben? Es wäre mir viel besser, wenn Martin Staufcik auch geben würde, um das Datum mit der Zeit zu behandeln.
Bachas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.