我可以在下面提供一个小片段来解释我想要做什么,但遗憾的是无法分享主要代码,因为它更复杂。我相信有一种简单的方法可以做到这一点,但它现在正在逃避我。
我有返回的数据(为简单起见,现在假设一个JSON文件),它有一个数字格式的日期,但不是日期字段。格式为数字,但相当于YYYYMMDD(20140513 = 2014年5月13日)。我有一个类似的问题,时间是HHMMSS。请注意,我也可能在YYYYMMDDhhmmss中获得时间戳。我知道每种类型的格式,但想要将内容修改为人类可读的。
我希望将其显示为5月13日(或其他日期格式)。
<li ng-repeat="Schedule in Dates">
{{Schedule.Date | date:'medium'}}
</li>
我的控制器:
var App = angular.module('App', []);
App.controller('Ctrl', function ($scope, $http)
{
$http.get('Data/Schedule.json').success(function(data) {
$scope.Dates = data;
});
$scope.OrderBy = 'date';
});
示例JSON
[
{
"id": 13,
"date": 20140807,
"time": "18:30",
"park": 4,
"Home": 5,
"Away": 2
},
{
"id": 14,
"date": 20140814,
"time": "18:30",
"park": 3,
"Home": 2,
"Away": 6
}
]
答案 0 :(得分:2)
除非您遵循ISO8601格式或者它是Date对象,否则您将无法使用日期过滤器。我的建议是要么改变你的数据,要么返回正确的格式,或者编写你自己的过滤器来解析这个。
<li ng-repeat="Schedule in Dates">
{{Schedule.Date | customDate}}
</li>
过滤器:
var App = angular.module('App', []);
App.filter('customDate', function(){
return function(numericDateTime){
//TODO: Custom date logic
}
});
答案 1 :(得分:1)
如果您可以将日期转换为可识别的格式,则可以正常使用。例如,“2014-08-07”将根据您的示例代码进行转换。您可以通过多种方式解决此问题
当您从$ http请求中回读数据时,将日期属性转换为此格式:
App.controller('Ctrl', function ($scope, $http) {
$http.get('Data/Schedule.json').success(function(data) {
$scope.Dates = data.map(function(object) {
object.date = << convert date >>;
return object;
});
});
});
或者,编写自己的过滤器,即时转换输入:
App.filter('myDateFilter', function(){
return function(input, format) {
var convertedDate = << convert input >>
return $filter('date')(convertedDate, format);
}
});