2016-09-16 2 views
-3

So ist folgendes zu beachten:Date.parse gibt mir NAN für String Datum ... Warten Was?

Date.parse('August 28th 2016'); 
NaN 

was warten? Was ist der richtige Weg, um die Datum Zeit dafür zu bekommen, so kann ich so etwas wie:

data.sort((a, b) => 
     Date.parse(Object.keys(a)[0]) - 
     Date.parse(Object.keys(b)[0])) 

Object.keys(a)[0] // => August 28th 2016 

So ... Was ist wieder der richtige Weg?

+0

Sie nicht analysieren können ein Datum mit diesem Format und Sie nicht neu zuweisen ... –

+3

Der richtige Weg wäre, um die integr Er stellt die Teile des Datums dar und gibt sie an "neues Datum" weiter. – adeneo

+0

Ich denke ** th ** ist das Problem. Probiere 'Date.parse ('28. August 2016');', es funktioniert – Bhavik

Antwort

2

Ich empfehle die Verwendung von momentjs, um die Arbeit mit Daten einfacher zu machen. Ihre Aufgabe kann mit erreicht werden:

var dates = [moment('August 28th 2016' ,'MMMM Do YYYY'),moment('August 22nd 2016' ,'MMMM Do YYYY'),moment('August 12th 2016' ,'MMMM Do YYYY')]; 
 

 
dates.sort(function(a,b) { 
 
    return a.isAfter(b); 
 
}); 
 

 
console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment-with-locales.min.js"></script>

Oder vielleicht schöner - wenn Ihr Objekt der Schlüssel sind Strings jetzt:

var dates = ['August 28th 2016','August 22nd 2016','August 12th 2016']; 
 

 
dates.sort(function(a,b) { 
 
    return moment(a,'MMMM Do YYYY').isAfter(moment(b,'MMMM Do YYYY')); 
 
}); 
 

 
console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment-with-locales.min.js"></script>