显示来自rails后端的角度js中的人类可读日期时间

时间:2016-10-11 04:14:49

标签: ruby-on-rails angularjs datetime-format

我想在我的前端显示人类可读的日期时间。我的数据来自rails后端。当我使用{{ item.created_at }}时,它显示的时间就像rails way 2016-10-10T10:29:47.993Z。但是我怎么能在5天前,3小时前以角度js显示这个?

2 个答案:

答案 0 :(得分:2)

要以角度格式化日期,您可以使用date filter,如下所示:

{{ 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>

答案 1 :(得分:1)

试试这个,为此创建一个过滤器,以获得代码的可重用性

&#13;
&#13;
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);
     }; 
});
&#13;
<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>
&#13;
&#13;
&#13;