【问题标题】:formatting date in angularJS tableangularJS表中的格式化日期
【发布时间】:2018-10-24 22:36:38
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你可以创建一个自定义过滤器来返回 moment(response.data[0].Date).format('DD-MM-YYYY');为了你的价值观

标签: angularjs datetime angularjs-ng-repeat


【解决方案1】:

您的问题是因为您使用的 date 过滤器是 AngularJS 定义的过滤器,旨在处理日期对象、自纪元以来的秒数或特定格式的字符串(请参阅:https://docs.angularjs.org/api/ng/filter/date)。在您的情况下,您传入一个字符串"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'}}
  • 您可以从当前拥有的字符串中解析出数字。由于常规 angularJS date 过滤器可以接受一个数字(自纪元以来的秒数)作为它的参数,它会正确格式化它。

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

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2017-12-10
    • 2014-04-20
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多