2016-06-09 6 views
0

Ich habe ein Array von Objekten mit Datumsangaben, wenn ein Benutzer ein anderes Start- und Enddatum hinzugefügt hat, kann es nicht mit vorhandenen Daten im Array überlappen.Suche ist Datum zwischen Array von Anfangs- und Enddatum

Mit Moment Ich habe diese Schleife aber kein Alarm ausgelöst wird, wenn ich Eingabe ein Datum, das

Mit Hilfe der Eingabedaten überlappt, startDate: "2013-09-02T00:00:00", endDate: "2015-05-05T00:00:0, die Schleife über das letzte Array-Element sollte den Alarm ausgelöst, wie die Termine überlappen.

let resultData = data.row; 
    let array = this.props.sectionData; 

    let inputStartDate = Moment(resultData.startDate, "DD/MM/YYYY"); 
    let inputEndDate = Moment(resultData.endDate, "DD/MM/YYYY"); 

    array.forEach(function (i) { 

     if(i.startDate && i.endDate) { 

      let startDate = Moment(i.startDate, "DD/MM/YYYY"); 
      let endDate = Moment(i.endDate, "DD/MM/YYYY"); 

      if (inputStartDate.isBetween(startDate, endDate) || inputEndDate.isBetween(startDate, endDate)) { 
       alert('date range cannot overlap'); 
      } 
     } 

    }); 

Meine Daten:

[ 
{"id": 3, 
"startDate": 2013-09-01T00:00:00, 
"endDate": 2013-09-01T00:00:00, 
"description": null, 
"userId": 900, 
"userName": "", 
"documents": [], 
}, 
{ 
"id": 5, 
"startDate": 2013-09-01T00:00:00, 
"endDate": 2013-09-01T00:00:00, 
"description": null, 
"userId": 1, 
"userName": "", 
"documents": [], 
"contributors": [] 
}, 
{ 
"id": 6, 
"startDate": "2013-09-01T00:00:00", 
"endDate": "2014-08-31T00:00:00", 
"description": "content", 
"userId": 1, 
"userName": "" 
}, 
+0

Haben Sie überprüft, ist es definitiv in die Schleife, zumindest? – ADyson

+0

auch, startdate und enddatum sind in YYYY-MM-DD hh: mm: ss-format, aber du fragst Moment zu analysieren sie als DD/MM/YYYY - das wird wahrscheinlich nicht funktionieren – ADyson

+0

Danke für die antwort, Ja, für die gültigen Daten überprüft sie – Bomber

Antwort

0

Let Moment das Objekt analysieren. Ein funktionierendes Beispiel finden Sie unter https://plnkr.co/edit/OqKNDsSWvcMc3PXOcu9F?p=preview.

Erläuterung:

let inputStartDate = moment("2013-09-02T00:00:00"); 
let inputEndDate = moment("2015-05-05T00:00:00"); 

Wie Adyson erklärt Ihr wurden in den falschen Formaten übergeben. Auch Sie fehlen Anführungszeichen in Ihren Testdaten rund um Ihre Daten für IDs 3 und 5.

+0

Danke für die Antworten, es sind die Daten in meiner Schleife, die als ungültig angezeigt werden, wie würde ich sie aus dem JSON formatieren? – Bomber

+0

Das gleiche wie Sie für die mit ID von 6 vermutlich tun :) Können Sie Ihren Code zeigen, der das Array erstellt oder ist das nur Testdaten? – terpinmd

+0

Ah jetzt sortiert, brilliant danke! – Bomber