2016-10-11 2 views
1

フロントエンドに人間が読める日時を表示したい。私のデータは、レールのバックエンドから来ています。 {{ item.created_at }}を使うと、2016-10-10T10:29:47.993Zのような時間が表示されます。しかし、どのように私は5日前、3時間前の角度jsのようにこれを表示できますか?あなたはこのようなdatefilterを使用することができ、角度で日付をフォーマットするためにレールバックエンドから来る角度jsで人間が読める日時を表示する

答えて

2

:あなたは非常に特定のフォーマットを探している

{{ item.created_at | date:'yyyy-MM-dd HH:mm' }} 

は、私はあなたがまさにそれを示すために、カスタムフィルタを構築する必要があると思います。あなたは、このフィルタの足場を使用することができます。

.filter('customDate', function() { 

    return function(date) { 
    // 1. Get current date 
    // 2. Get diff from expression date to current 
    // 3. Apply your format and return result; 
    }; 

}); 

最後にライブラリがある日付と時刻を操作するためmomentjsと呼ばれ、そのangular versionがあります:

は、ライブラリのam-time-agoディレクティブを確認します。

<span am-time-ago="item.created_at"></span> 
+0

{{item.created_at |データ: 'yyyy-MM-dd HH:mm'}}は機能していません。 item.created_atをミリ秒に変換する必要があります。これはレールが私たちに2016-10-10T10:29:47.993Zを与える形式です。 –

+0

@SalmanMahmud申し訳ありませんが、私はtypoが 'data'ではなく' date'です。もう一度試してみてください。 – ianaya89

+0

はい、データの代わりに日付を使用しています –

1

これを試して、コードを再利用するためのフィルタを作成してください

var jimApp = angular.module("mainApp", []); 
 

 
jimApp.controller('mainCtrl', function($scope){ 
 
    $scope.date = "1992-05-07T22:00:00.000Z"; 
 
}); 
 

 
jimApp.filter('dateFilter', function() { 
 
    function calculateDate(date) { 
 
     date = new Date(date); 
 
     var year = date.getFullYear(); 
 
     var month = date.getMonth()+1; 
 
     var day = date.getDate(); 
 
     return day+'-'+month+'-'+year; 
 
    } 
 

 
    return function(date) { 
 
      return calculateDate(date); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="mainApp" ng-controller="mainCtrl"> 
 
    <div>{{date | dateFilter}}</div> 
 
</div>

+0

角度デートフィルタのデフォルト動作を使用してこれを実現できます。 – ianaya89

関連する問題