2014-05-13 17 views
6

Der Filter, den ich unten erstellt habe, funktioniert auf Chrome, aber nicht auf Firefox. Ich verstehe nicht warum.Filterdatum gibt NaN-NaN-NaN in AngularJS zurück

myApp.filter('dateCustom', [ '$filter', function ($filter) { 
    return function (input) { 

     // input => 2014-05-13 15:04:48 

     if(angular.isDefined(input)){ 
     var d = new Date(input); 
     var time = d.getTime(); 
     return $filter('date')(time,'dd/MM/yyyy'); 
     } 
    } 
    }]); 

HTML:

<span> {{ project.date_created_at | dateCustom }} </span> 

Chrome

enter image description here

Firefox

enter image description here

+0

was ist der Eingabewert? – Dalorzo

+0

Überprüfen Sie mein Update bitte – Steffi

+0

Ich sehe immer noch nicht den Wert nur das Objekt project.date_created_at, die uns keine Ahnung gibt, was drin ist. – Dalorzo

Antwort

6

Firefox unterstützt kein Datum in diesem Format, Sie müssen die Bindestriche zuerst durch Schrägstriche ersetzen.

var d = new Date(input.replace(/-/g, '/')); 
+0

Fast perfekt! Du hast ein ')' verpasst. Vielen Dank. – Steffi

+1

Ja Entschuldigung, das schnelle Kopieren/Einfügen scheitert meinerseits. Ich habe die Antwort aktualisiert. –

0

Die Umwandlung einer Zeichenfolge in ein Datum kann von Browser zu Browser variieren. Wenn Sie etwas wie NaN auf Ihrem Datum bekommen, ist es wegen der Datumsumwandlung.

Der beste Weg, den ich gefunden habe, ist die Verwendung MomentJS, ein großartiges Werkzeug zum Formatieren von Daten. Nachdem ich es benutzt habe, funktionierte es in jedem Browser. Nur mit:

moment($scope.date).format("DD/MM/YYYY"); 
Verwandte Themen