AngularJS-按日期过滤

时间:2019-01-14 12:09:32

标签: angularjs date

我有一个来自 API 结果的项目列表。 在我看来,我呈现了这种结果 ng-repeat

new Vue({
 el: '#app',
data: () => ({
 active: 0,
 listData:{
   "A" : [
     {
      "text":"Lorem iPsum",
       "type" : "a1",
     },
     {
      "text":"Ipsum Lorem iPsum",
      "type" : "a1",
     },
     {
       "text":"Lorem",
       "type" : "a1",
   },
      {
       "text":"B1 text i.",
       "type" : "b1",
      },
      {
        "text":"b2 text i2",
       "type" : "b1",
       },
      {
        "text":"c1 text i.",
         "type" : "c1",
       },
        {
           "text":"c2 text i2",
          "type" : "c1",
        },
     ]
      }
      })
  })

这是我的 API 回复。

<div ng-repeat="item in items"></div>

我需要按日期进行过滤,即,如果这些商品的展示时间超过3个月。

2 个答案:

答案 0 :(得分:0)

假设其为数组:

let items = ["2017-01-17T09:35:38.429Z",
"2017-01-03T10:00:00.000Z",
"2017-01-27T14:34:55.179Z"]

执行此操作

let threeMonthsAgo = new Date(Date.now() - 7776000000)
items = items.filter(date => { threeMonthsAgo.before( (new Date(date)) ) })

答案 1 :(得分:0)

您将根据自己的状况显示该商品,在这种情况下,该商品的年龄不得超过3个月。

<div ng-repeat="item in items"> <div ng-if="!isOlderThan3Months(item)">item</div> </div>

function isOlderThan3Months(date){
   return new Date().getTime() - new Date(date).getTime() > 1000 /*ms*/ * 60/*s*/ * 60/*min*/ * 24/*h*/ * 30/*days*/ * 3/*months*/ )
}

condition可以调用一个函数来计算日期之间的差。在here中查找多种实现方法。