2016-08-25 1 views
2

Ich habe Datumszeichenfolge wie diese 1 May 2010 To 15 Aug 2016. Ich möchte dies nur als Datumszeichenfolge auf meine Funktion überprüfen und nicht auf eine Funktion fortfahren.Wenn ich diese Zeichenfolge mit new Date(value) überprüfe, wird das ungültige Datum zurückgegeben .Wie kann ich das als Datum prüfen?Check isDate wird zurückgegeben Ungültiges Datum

+2

Es gibt zwei Daten? 1. Mai 2010 und 15. August 2016. Sie sollten diese teilen und beide überprüfen. – Evus

+0

inspiration http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript – daremachine

+0

es gibt zwei Daten und sind diese Daten von Ihnen oder (statisch) oder von einigen, wie dynamische –

Antwort

0
var checkDate = function (str){ 
    var dates = str.split("To"); 
    for(var i = 0; i < dates.length; i++) { 
     if (moment(dates[i]).isValid()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

ich diese Funktion in meinem Code überall verwenden kann.

+0

Ich habe meine Funktion nach Ihren Bedürfnissen geändert. Sie müssen es auf diese Weise tun. bitte prüfe. Hier hat Ihr Code nicht die Möglichkeit, den zweiten Teil des Arrays zu überprüfen. Beispiel: Denken Sie an den Fall "1. Mai 2001 bis 15. August 20a6". es wird wahr zurückkommen. aber der zweite Teil ist nicht gültig. Überprüfen Sie meine Funktion und wenn es in Ordnung ist, markieren Sie es als akzeptiert, da es anderen helfen würde. –

+0

Sie können die gesamte Funktion durch 'str.split ('To') .every (s => return moment (s) .isValid()); ersetzen, aber Sie sollten dem Parser das String-Format zur Verfügung stellen. – RobG

1
var str = "1 May 2010 To 15 Aug 2016"; 
//First split string 
var array = str.split("To"); 
//then check if both are dates 
for(var i = 0; i < array.length; i++) { 
if(isNaN(new Date(array[i]))) { //Checking date 
    alert(array[i]+ ' is not valid date'); 
} 
} 
3

Ich würde js Datum Bibliothek Moment js dafür verwenden.

var checkDate = function (str){ 
    var dates = str.split("To"); 
    var flag = true; 
    for(var i = 0; i < dates.length; i++) { 
     if (moment(dates[i]).isValid()) { 
     flag = false; 
    } 
    } 

    return flag; 
} 

Ich habe eine Geige für den

erstellt

https://jsfiddle.net/Refatrafi/wj5zc75e/

+0

Ich hatte Wechsel Ihre Funktion und ich bevorzuge es in meinem Code. Danke und sehe meine Antwort. –

+0

Danke Kumpel, es spart mir Zeit! –

+0

Bitte tun Sie das nicht. Lesen und befolgen Sie [* die Dokumentation *] (http://momentjs.com/docs/#/parsing/string/) und ** immer ** geben Sie das Format der Zeichenfolge an, die analysiert werden soll. Andernfalls überlassen Sie es dem Parser, zu erraten. Es gibt den ersten Versuch zurück, der ein gültiges Datum zurückgibt, nicht unbedingt das "richtige" Datum. – RobG

1

Beim Analysieren von Strings sollten Sie immer das Format der zu analysierenden Zeichenfolge angeben. Dies kann sehr einfach durchgeführt werden unter Verwendung des ES5 jedes Methode:

var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(function(s) { 
 
    return moment(s,'D MMM YYYY').isValid(); 
 
}); 
 

 
console.log(isValid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>

Wenn Pfeil Funktionen in Ordnung sind, dann:

var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(s=>moment(s,'D MMM YYYY').isValid()); 

macht die Arbeit.

Verwandte Themen