首页 > 解决方案 > angularJS表中的格式化日期

问题描述

我正在使用 angularJS 创建一个 Web 应用程序我有以下格式的日期

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

我可以将这个日期转换为正常MM-DD-YYYY的时刻,就像这样

moment(response.data[0].Date).format('DD-MM-YYYY');

但是在使用 ng-repeat 将数据绑定到表中时,我无法实现这一点

我做了这样的事情

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

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

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

标签: angularjsdatetimeangularjs-ng-repeat

解决方案


您的问题是因为date您使用的过滤器是 AngularJS 定义的过滤器,旨在处理日期对象、自纪元以来的秒数或专门格式化的字符串(请参阅:https ://docs.angularjs.org/api /ng/过滤器/日期)。在您的情况下,您传递的是一个 string "Date(1539887400000)",它不符合date过滤器参数期望的任何特定格式。以下是我想解决这个问题的几种方法:

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

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


推荐阅读