Angular JS日期格式过滤器内部Ng重复不格式化

时间:2014-07-25 16:39:35

标签: angularjs angularjs-directive angularjs-ng-repeat angular-ui angular-ui-bootstrap

来自JSON的实际日期

enter image description here

需要将其格式化如下。

Effective Date : 2010-08-31 (trim the time stamp)
End Date : 2010-08-31 (trim the time stamp)

使用以下代码格式化Ng-Repeat内的日期。

    <li ng-repeat="product in data | startFrom:currentPage*pageSize | limitTo:pageSize"
           ng-click="getAttributes(product)">   
       {{product.prod_start_date| date:'MM/dd/yyyy'}}
       {{product.prod_end_date| date:'MM/dd/yyyy'}}
    </li>

但它不起作用仍然显示相同。

日期是否应作为新日期传递,如下面的jsfiddle示例所示     http://jsfiddle.net/southerd/xG2t8/

请注意如何在ng-repeat中执行此操作。请帮助我。在此先感谢

3 个答案:

答案 0 :(得分:21)

我创建了自己的过滤器来解决这个问题。 日期过滤器不能接受字符串,需要日期对象。

.filter('cmdate', [
    '$filter', function($filter) {
        return function(input, format) {
            return $filter('date')(new Date(input), format);
        };
    }
]);

然后你可以这样做:

{{product.prod_start_date| cmdate:'MM/dd/yyyy'}}

答案 1 :(得分:5)

我使用moment.js进行UI日期时间处理(甚至还有一个不错的angular-moment bower包)

用法:

<span>{{product.prod_start_date | amDateFormat:'MM/dd/yyyy'}}</span>

它有许多其他选项以及相对日期等。

答案 2 :(得分:1)

我已更新您在小提琴中显示的控制器,这是您的updated filter

在这里,我使用了$filter('date')这是Angular本身的一个功能,以便以所需格式格式化日期。

这是控制器:

function Scoper($scope,$filter) {
    $scope.s = "2012-10-16T17:57:28.556094Z";
    var dateObj = new Date($scope.s);
    $scope.dateToShow = $filter('date')(dateObj,'yyyy-MM-dd');
    console.log($scope.dateToShow);
}