2014-05-13 14 views
6

Filtr utworzony poniżej działa w Chrome, ale nie w Firefoksie. Nie rozumiem, dlaczego.data filtra zwraca NaN-NaN-NaN w AngularJS

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

jaka jest wartość wejściowa? – Dalorzo

+0

Sprawdź moją aktualizację proszę – Steffi

+0

Nadal nie widzę wartości tylko obiektu project.date_created_at, który nie daje nam żadnej wskazówki, co jest w nim. – Dalorzo

Odpowiedz

6

Firefox nie obsługuje daty w tym formacie, musisz najpierw zastąpić myślniki ukośnikami.

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

Prawie idealnie! Tęskniłeś za ')'. Dziękuję Ci bardzo. – Steffi

+1

Tak, przepraszam, szybkie kopiowanie/wklejanie nie działa z mojej strony. Zaktualizowałem odpowiedź. –

0

Konwersja ciągu do daty może się różnić w zależności od przeglądarki. Jeśli otrzymujesz coś podobnego do NaN na swojej dacie, dzieje się tak z powodu konwersji daty.

Najlepszym sposobem, jaki znalazłem, jest użycie MomentJS, świetnego narzędzia do formowania dat. Skutecznie po tym, jak skorzystałem, działało w każdej przeglądarce. Wystarczy użyć:

moment($scope.date).format("DD/MM/YYYY"); 
Powiązane problemy