2014-05-13 21 views
6

Bộ lọc tôi đã tạo bên dưới hoạt động trên Chrome chứ không phải Firefox. Tôi không hiểu tại sao.ngày lọc trả về NaN-NaN-NaN trong 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

giá trị đầu vào là gì? – Dalorzo

+0

Kiểm tra cập nhật của tôi xin vui lòng – Steffi

+0

Tôi vẫn không thấy giá trị chỉ là đối tượng project.date_created_at mà không cung cấp cho chúng tôi bất kỳ đầu mối nào trong đó. – Dalorzo

Trả lời

6

Firefox không hỗ trợ một ngày ở định dạng đó, bạn sẽ phải thay thế dấu gạch ngang bằng dấu gạch chéo trước.

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

Gần như hoàn hảo! Bạn đã bỏ lỡ một ')'. Cảm ơn nhiều. – Steffi

+1

Vâng xin lỗi về điều đó, nhanh chóng sao chép/dán thất bại trên một phần của tôi. Tôi đã cập nhật câu trả lời. –

0

Chuyển đổi chuỗi cho đến nay có thể thay đổi từ trình duyệt này sang trình duyệt khác. Nếu bạn đang nhận được một cái gì đó như NaN vào ngày của bạn, đó là vì chuyển đổi ngày.

Cách tốt nhất tôi tìm thấy là sử dụng MomentJS, một công cụ tuyệt vời để tạo ngày tháng. Hiệu quả sau khi tôi sử dụng nó làm việc trong mọi trình duyệt. Chỉ cần sử dụng:

moment($scope.date).format("DD/MM/YYYY"); 
Các vấn đề liên quan