角度自定义过滤器 - 格式化日期问题

时间:2014-09-17 14:19:55

标签: angularjs angularjs-filter

这是我的选择,选项应该是yyyy / MM / dd,但它们不是

<select ng-model="date" ng-options="row.Triage_x0020_start_x0020_date as row.Triage_x0020_start_x0020_date for row in rows | jsonDate:'yyyy/MM/dd'| unique:'Triage_x0020_start_x0020_date'">

- 选择主题 -

这是我正确显示行的列表.Triage_x0020_start_x0020_date

<ul>
  <li ng-repeat="row in rows | filter:businessUnit | filter:topic | filter:date">
    <p>{{row.ID}}</p>
    <p>{{row.BusinessUnit}}</p>
    <p>{{row.Topic}}</p>
    <p>{{row.Triage_x0020_start_x0020_date | jsonDate:'yyyy/MM/dd'}}</p>
  </li>
</ul>

这是我的列表,它是将json字符串转换为Date对象的过滤器。

var myApp = angular.module('myApp', ['ngRoute','ui.utils']);

myApp.filter('jsonDate', function ($filter) {
    return function (input, format) {
        return $filter('date')(new Date(input), format);
    };
});


myApp.controller('RowsListCtrl', function ($scope) {
    $scope.rows = myJSON;
});

问题是为什么过滤器不适用于选择&gt;选项和显示字符串2014-04-02 18:00:00

1 个答案:

答案 0 :(得分:2)

您应该在过滤器中将日期转换为时间戳

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

但使用2014-04-02 18:00:00时,日期格式new Date()在Safari和Firefox中无效,您可以参考here

相关问题