【问题标题】:How to sort date in table Angular如何在表格Angular中对日期进行排序
【发布时间】:2016-12-20 14:33:09
【问题描述】:

我通过在表格中使用 ng-repeat 从 json 中获取日期。该日期如下所示:

20_12_2016

我无法按OrderBy 对其进行排序,因为它只会对前两个数字进行排序(20_12_2016 只有“20”,排序在“_”中停止)。

表格如下:

01_03_2016,
02_01_2016,
02_06_2016...

如何按月份排序?

【问题讨论】:

  • 所以在我看来你有一个字符串列表(包含格式化的日期)。在这种情况下,您可能需要创建一个自定义过滤器来为您排序。它可能会获取字符串数据并将其转换为可以使用默认比较运算符进行比较的数字。 - 您可以在此处阅读有关创建过滤器的信息:docs.angularjs.org/api/ng/filter/filter
  • 一个有趣的解决方案是在应用程序中将20_12_2016 识别为日期,因此可以对其进行格式化。不知道atm怎么用。
  • 研究如何在 JavaScript 中解析日期(或使用提供数据的系统以标准格式给出日期,如 ISO 8601):stackoverflow.com/q/2587345/215552 以及如何按它们排序角度:stackoverflow.com/q/35402478/215552
  • 你能控制日期的格式吗?如果您可以让服务器为其提供 YYYY_MM_DD,那么排序将“正常工作”。否则,您将不得不提供自己的自定义比较器。
  • 您在任何地方都找不到这样的日期格式。不是一个好习惯

标签: angularjs sorting date


【解决方案1】:

试试这个:Plunker

| orderBy: '+date.substring(3,5)'">

【讨论】:

    【解决方案2】:

    你可以试试

    var app = angular.module("myApp", []);
      app.controller("myCtrl", function($scope,$compile) {
    
       $scope.sortByDate = function(date) {
          var b = date.split('_').map(Number);
          return b
        }
    })
    
    
    
    
     <div ng-repeat="dateobj in ['20_11_2016','25_11_2016','10_11_2016']  | orderBy:getlastname" >{{dateobj}}</div>
    

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2020-12-15
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多