Angularjs 在ng重复中比较日期

Angularjs 在ng重复中比较日期,angularjs,date,angularjs-ng-repeat,Angularjs,Date,Angularjs Ng Repeat,这是我的问题,我想比较两个日期,如果为真,则显示我的ng的每个日期。但这不起作用,因为如果返回false且未显示任何内容,则在处创建的myuser.u中只有一个低于时间myng <ul ng-repeat="user in userticket track by $index" ng-if="user.created_at > time" > <li class="row ticketlist">{{user.created_at | amDateFo

这是我的问题,我想比较两个日期,如果为真,则显示我的
ng的每个日期。但这不起作用,因为如果
返回false且未显示任何内容,则在处创建的my
user.u中只有一个低于时间
my
ng

<ul ng-repeat="user in userticket track by $index" ng-if="user.created_at > time" >
       <li class="row ticketlist">{{user.created_at | amDateFormat:'YYYY.MM.DD'}}</li>
</ul>
一直使用。然后你可以直接比较

$scope.time = new Date(2015, 5);
我看不出user.created_at是什么格式,但如果它不是日期对象,您也可以解析/转换它


最佳方法是创建自定义过滤器。看

这就是解决方案:

JSFIDDLE

html


{{order.date1*1000}日期:'dd-MM-yyyy'}
{{order.date2*1000}日期:'dd-MM-yyyy'}
javascript

function parseDate(input) {
  var parts = input.split('-');
  return new Date(parts[2], parts[1]-1, parts[0]); 
}

nameSpace.filter("myfilter", function() {
  return function(items, from, to) {
        var df = parseDate(from);
        var dt = parseDate(to);
        var result = [];        
        for (var i=0; i<items.length; i++){
            var tf = new Date(items[i].date1 * 1000),
                tt = new Date(items[i].date2 * 1000);
            if (tf > df && tt < dt)  {
                result.push(items[i]);
            }
        }            
        return result;
  };
});
also, i changed the timestamp data type from string to numbres.

  $scope.orders = [
  {
    "date1": 1306487800,
    "date2": 1406587800
  },
  {
    "date1": 1196487800,
    "date2": 1406597800
  }]
函数解析日期(输入){
var parts=input.split('-');
返回新日期(零件[2],零件[1]-1,零件[0]);
}
nameSpace.filter(“myfilter”,function()){
返回函数(项目、从、到){
var df=解析日期(从);
var dt=解析日期(至);
var结果=[];
对于(变量i=0;i df&tt
不工作,我已经尝试转换它但不工作,因为
ng if
如果他在ng repeat中的一个结果为false,则不返回结果
<input ng-model="dateFrom" type="text"/>
<input ng-model="dateTo" type="text"/>
<tr ng-repeat="order in orders | myfilter:dateFrom:dateTo">
  <td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
  <td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
function parseDate(input) {
  var parts = input.split('-');
  return new Date(parts[2], parts[1]-1, parts[0]); 
}

nameSpace.filter("myfilter", function() {
  return function(items, from, to) {
        var df = parseDate(from);
        var dt = parseDate(to);
        var result = [];        
        for (var i=0; i<items.length; i++){
            var tf = new Date(items[i].date1 * 1000),
                tt = new Date(items[i].date2 * 1000);
            if (tf > df && tt < dt)  {
                result.push(items[i]);
            }
        }            
        return result;
  };
});
also, i changed the timestamp data type from string to numbres.

  $scope.orders = [
  {
    "date1": 1306487800,
    "date2": 1406587800
  },
  {
    "date1": 1196487800,
    "date2": 1406597800
  }]