angularjs日期过滤器不格式化我的json值

sch*_*opy 8 angularjs

我有一个返回json的服务,如下所示:

"Results":[{"Id":"1","SomeDate":"2/19/2013 10:34:04 PM"}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用绑定格式化时,它不起作用 - 它只显示上面的字符串:

{{values.SomeDate| date:'mediumTime' }}
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是传递这种格式,它的工作原理如下:

{{ '1997-03-01T00:00:00+01:00' | date:'mediumTime'}}
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?

Ale*_*orn 12

正如charlietfl的评论中所提到的,一个干净的选择是更新服务以返回已经与内置角度过滤器兼容的日期格式.

但是,如果无法做到这一点,您可以设置自定义过滤器来解析日期.

我推荐的(非常小的)库是Moment.js:http://momentjs.com/

以下是关于如何在自定义角度过滤器中包装Moment.js的示例博客文章:http://www.34m0.com/2012/07/angularjs-user-friendly-date-display.html

angular.module('myModule').
    filter('fromNow', function() {
        return function(dateString) {
            return moment(new Date(dateString)).fromNow()
        };
    });
Run Code Online (Sandbox Code Playgroud)

这将用作:

{{ reply.createdDate | fromNow }}
Run Code Online (Sandbox Code Playgroud)


use*_*747 9

您可以将它放在您的控制器中:

  $scope.toJsDate = function(str){
    if(!str)return null;
    return new Date(str);
  }
Run Code Online (Sandbox Code Playgroud)

然后:

{{toJsDate(values.SomeDate)| date:'mediumTime' }}
Run Code Online (Sandbox Code Playgroud)