角度过滤基于当前日期

时间:2014-12-19 19:25:58

标签: angularjs angular-filters

我有一个应用程序需要根据项目是否等于当前日期或过去来过滤项目。我的日期值被格式化为类似" 12/19/2014"。

的字符串

我有一个过滤器设置,但它返回一个空数组,因为日期格式没有正确匹配。

app.filter('publishFilter', function() { 

   return function(items) {

    var newItems = [];

    var currentDate = new Date();

    angular.forEach(items, function(item) {
      if (item <= currentDate) {
        newItems.push(item);
      }
    });

    return newItems;
  }
});

2 个答案:

答案 0 :(得分:0)

比较日期时,尝试将双方转换为日期。假设items是表示日期的字符串列表,请尝试: -

app.filter('publishFilter', function() { 

   return function(items) {

    if(!angular.isArray(items)) return [];

    var currentDate = new Date();
    currentDate.setHours(0,0,0,0); //Just normalize the time offset, since item is just time.

    return items.filter(function(item){
       return new Date(item) <= currentDate;
    });
  }
});

答案 1 :(得分:0)

如果您使用momentJS库,这可以更安全,更简单。对时间进行编程就像编程对金钱一样,你应该轻轻一点,因为最轻微的错误可以并且会在你的代码中引入业务逻辑错误。

_.forEach(items, function(item){
   if(moment().isBefore(moment(item){
       //do something
   }
)}