在 angularJS table 中格式化日期

formatting date in angularJS table

我正在 angularJS 创建一个网络应用我有一个格式如下的日期

"response.data[0].Date = "/Date(1539887400000)/"

我可以像这样

瞬间将这个日期转换成正常的MM-DD-YYYY
moment(response.data[0].Date).format('DD-MM-YYYY');

但是在使用 ng-repeat 将数据绑定到 table 时我无法实现这个

我做了这样的事情

<td>{{d.Date| date:'DD-MM-YYYY' }}</td>

但在 table 中它仍然显示为 /Date(1539887400000)/

我需要做什么才能将 /Date(1539887400000)/ 转换为 DD-MM-YYYY

您的问题是因为您使用的 date 过滤器是 AngularJS 定义的过滤器,设计用于处理日期对象、纪元以来的秒数或特定格式的字符串(参见:https://docs.angularjs.org/api/ng/filter/date)。在您的例子中,您传递的是字符串 "Date(1539887400000)",它不符合过滤器的 date 参数期望的任何特定格式。以下是我考虑解决此问题的几种方法:

  • 您可以在从数据库中获取数据后初始化日期选项。例如:$scope.testDate = new Date(1539887400000);。然后,您可以在此对象上使用常规 angular 日期过滤器:{{testDate | date: 'dd-MM-yyyy'}}.
  • 您可以使用 angular-moment (link: https://github.com/urish/angular-moment),它比常规的 angularJS 日期过滤器具有更多功能。然后您可以使用 amDateFormat 并传递您的字符串,如下所示:{{d.Date | amDateFormat: 'DD-MM-YYYY'}}
  • 您可以从您当前拥有的字符串中解析出数字。由于常规 angularJS date 过滤器可以接受一个数字(自纪元以来的秒数)作为参数,它会正确地格式化它。

请在此处查看示例 plunker,其中显示了其中的一些实际操作:https://plnkr.co/edit/quCvL3GhSux8ctYQqAwA