2014-05-13 16 views
6

Il filtro che ho creato di seguito funziona su Chrome ma non su Firefox. Non capisco perché.data di filtro restituisce NaN-NaN-NaN in 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

qual è il valore di input? – Dalorzo

+0

Controlla il mio aggiornamento per favore – Steffi

+0

Ancora non vedo il valore solo dell'oggetto project.date_created_at che non ci dà alcun indizio su cosa ci sia dentro. – Dalorzo

risposta

6

Firefox non supporta una data in quel formato, dovrai prima sostituire il trattino con le barre.

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

Quasi perfetto! Ti sei perso un ')'. Grazie mille. – Steffi

+1

Sì, mi dispiace per quello, copia/incolla rapida non riescono da parte mia. Ho aggiornato la risposta. –

0

Convertire una stringa fino a data può variare da un browser all'altro. Se stai ricevendo qualcosa come NaN nella tua data è a causa della conversione della data.

Il modo migliore che ho trovato è quello di utilizzare MomentJS, un ottimo strumento per la formulazione delle date. Effettivamente dopo averlo usato ha funzionato in ogni browser. Basta usare:

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