WebAPI JSON日期和AngularJS

时间:2014-08-01 16:01:02

标签: json angularjs asp.net-web-api

我正在开发一个用ASP.NET WebAPI和Angular编写的应用程序。对于我从WebAPI获得的JSON日期,除了之外,其他一切都很有效,看起来像/Date(1402034400000)/。 Angular不知道如何处理这个字符串。如果我将其解析为数字,那么它会将其转换为我使用date: 'MM/dd/yyyy'时的日期。

如何以角度方式修复此问题?也许是指令?

在此视图中,person.trainingDate在呈现的HTML中看起来像/Date(1402034400000)/。即使我添加| date: 'MM/dd/yyyy'它也显示相同,因为angular不会将字符串识别为可解析的日期。

<table class="table table-bordered table-hover">
    <thead><tr><th>Training Date</th></tr></thead>
    <tbody>
        <tr ng-repeat="person in company.people">
            <td>{{person.trainingDate}}</td>
        </tr>
    </tbody>
</table>

谢谢,

亚伦

2 个答案:

答案 0 :(得分:0)

如果您的WebApi返回的值是实际日期而不是转换为字符串的日期,则返回的值将类似于&#34; 2012-03-19T07:22Z&#34; ,这是实际上是ISO 8601 standard

由浏览器将此值理解为大多数浏览器除了IE8或更早版本(据我所知)之外所理解的日期,但为了保证将此值解析为日期,您可以使用其他JS像moment.js这样的图书馆。

答案 1 :(得分:0)

要解决您可以创建自定义过滤器的问题,请参阅http://jsbin.com/gaqoce/1/edit

var app = angular.module('app', []);

app.filter('customDate', function(){
  return function(value) {
  var myDate = new Date(value.match(/\d+/)[0] * 1);  
  return  myDate;
  };

});
app.controller('firstCtrl', function($scope){

  $scope.person= {
    trainingDate: '/Date(1402034400000)/'
  };
});

HTML:

 <div ng-controller="firstCtrl">
  <p>{{person.trainingDate | customDate }}
</p>