正确格式化AngularJS的ASP.NET MVC日期

Ani*_*l D 5 asp.net-mvc angularjs

我使用AngularJS从ASP.NET服务器应用程序获取数据并在客户端显示它.这是我得到的:

ProjectID ? CreatedOn
?????????????????????????????????
13241     ? /Date(1338364250000)/   
13411     ? /Date(1338370907000)/   
Run Code Online (Sandbox Code Playgroud)

如您所见,日期未正确显示.我想将日期格式化为YYYY-MM-DD HH:MM:SS.我怎样才能做到这一点?


HTML视图:

<div ng-app ng-controller="FirstCtrl">
    <table>
        <thead>
            <tr>
                <td>
                    ProjectID
                </td>
                <td>
                    CreatedOn
                </td>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="team in teams" class="thumbnail">
                <td>
                    {{team.ProjectID}}
                </td>
                <td>
                    {{team.CreatedOn}}
                </td>
            </tr>
        </tbody>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

动作方法:

public JsonResult GetUser()
{
   return Json(new { data = ProjectService.GetPrefixUsedCount(1).ToArray() });
}
Run Code Online (Sandbox Code Playgroud)

返回JSON结果:

{"data":[{"ProjectID":13241,"CreatedOn":"\/Date(1338364250000)\/"},
{"ProjectID":13411,"CreatedOn":"\/Date(1338370907000)\/"}]
Run Code Online (Sandbox Code Playgroud)

Jor*_*ray 15

快速修复

如果无法在MVC中更改格式,则可以执行以下操作:

{{ team.CreatedOn.slice(6, -2) | date: 'yyyy-MM-dd HH:mm:ss' }}
Run Code Online (Sandbox Code Playgroud)

关键位是.slice(6, -2)-it修剪所有额外的垃圾,只留下纪元时间.


想要一个过滤器?

如果你经常使用它,你可能更喜欢自定义过滤器.这个包装现有的date过滤器:

.filter('mvcDate', ['$filter', $filter =>
  (date, format, timezone) =>
    date && $filter('date')(date.slice(6, -2), format, timezone)
]);
Run Code Online (Sandbox Code Playgroud)

现在只需date用我们的自定义过滤器替换过滤器:

{{ team.CreatedOn | mvcDate: 'yyyy-MM-dd HH:mm:ss' }}
Run Code Online (Sandbox Code Playgroud)

这是JSFiddle的一个工作示例.