我想在我的前端显示人类可读的日期时间。我的数据来自rails后端。当我使用{{ item.created_at }}
时,它显示的时间就像rails way 2016-10-10T10:29:47.993Z。但是我怎么能在5天前,3小时前以角度js显示这个?
答案 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)
试试这个,为此创建一个过滤器,以获得代码的可重用性
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;