AngularJS将数字转换为日期格式

时间:2014-05-13 21:11:04

标签: json angularjs date

我可以在下面提供一个小片段来解释我想要做什么,但遗憾的是无法分享主要代码,因为它更复杂。我相信有一种简单的方法可以做到这一点,但它现在正在逃避我。

我有返回的数据(为简单起见,现在假设一个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
}
]

2 个答案:

答案 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);
    }
});
相关问题