AngularJS:日期格式过滤器不格式化日期

时间:2014-06-29 11:22:54

标签: angularjs

我正在尝试格式化MM dd,yyyy格式的API结果集中返回的日期,但由于某种原因它无效。下面是我正在使用的代码,有人可以告诉我我在这里缺少什么/做错了吗?以及如何实现上述所需格式

          <div>
            <div>
              <p>Date Added:</p>
              {{memberData.DateJoined | date: 'MM dd, YYYY'}}
            </div>
          </div>    

也尝试使用

          <div>
            <div>
              <p>Date Added:</p>
              {{memberData.DateJoined | date: 'MM dd, yyyy'}}
            </div>
          </div>    

API返回的日期格式为:

     DatePosted: "2014-05-15 00:00:00"

不工作定义: 日期显示为2014-05-15 00:00:00,同时应显示为2014年5月15日或2014年5月15日

3 个答案:

答案 0 :(得分:4)

也许它只是一个错字,但YYYY应该是小写的:

{{memberData.DateJoined | date: 'MM dd, yyyy'}}

编辑:您的源格式2014-05-15 00:00:00不是Angular的有效来源,因此您需要先在控制器中将其转换为Date对象:

$scope.DateJoined = new Date('2014-05-15 00:00:00');

然后你可以使用:

{{ DateJoined | date: 'MM dd, yyyy'}}

请参阅JSFiddle上的示例。

答案 1 :(得分:1)

在角度控制器中创建一个新函数来修复返回的日期:

myApp.controller('myController', function($scope){

$scope.fixDate = function(date){
    return new Date(date);
};

..... rest of your controller goes here.
});

在HTML中:

{{fixDate(DatePosted) | date:  "MM dd, yyyy"}}

如果从数据库返回日期数组(例如“orders_date”),也可以使用此函数,它可以与ng-repeat指令一起使用

答案 2 :(得分:0)

尝试将日期字符串放入Date对象:

DatePosted = new Date(DatePosted)