获取比当前日期时间晚的时间

时间:2017-02-24 17:06:10

标签: javascript angularjs

我有一个对象数组,其中我有一个date_time属性,在这个数组中,我希望得到date_times对象的长度,这些对象在我当前的date_time中更快。

例如:

[data:[{date: "2017-02-24 16:41:51"}, {date: ""2017-02-21 16:41:51"}...],
last_clicked: "2017-02-24 19:41:51"]

我希望在“data”数组上获得比“last_clicked”更早的date_time的objecs长度。

3 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情:

let length = data.filter(function(d) {
   return new Date(d.date) < new Date(last_clicked)
}).length;

答案 1 :(得分:0)

您可以使用Angulars-orderBy-filter。我为你设置了一个示例,只需将我的数据密钥替换为数据的日期键。

&#13;
&#13;
function exampleController($scope, exampleFactory, $filter) {
  $scope.list = [];
  $scope.reverse = false;
  $scope.changeSortOrder = function() {
    $scope.reverse = !$scope.reverse;
  };

  function getList() {
    exampleFactory
      .getList()
      .then(function(list) {
        // $scope.list = list;
        //alternatively you could filter here and change the sort order with the button if needed at all.
        $scope.list = $filter('orderBy')(list, '-id'); //where this would be replaced by date(note: the '-' in front of id changes the sort order ASC/DESC)
        //$scope.list = $filter('orderBy')(list, 'id', true); //where 3rd argument is wether order should be reversed
      });
  }

  getList();
}

function exampleFactory($http) {
  var root = 'http://jsonplaceholder.typicode.com';

  function getList() {
    return $http.get(root + '/comments')
      .then(function(resp) {
        return resp.data;
      });
  }
  return {
    getList: getList
  };
}

angular
  .module('app', [])
  .controller('exampleController', exampleController)
  .factory('exampleFactory', exampleFactory);
&#13;
.container-fluid {
  background-color: #1D1F20;
  color: #fff;
  font-size: 14px;
  font-weight: bold;
  button {
    margin-top: 20%;
  }
}

ul li {
  list-style: none;
  margin: 10px;
}

.child-padding>div {
  padding: 2px;
}

.col-md-2 {
  position: fixed;
  button {
    margin-bottom: 10%;
  }
}

.btn-circle {
  width: 30px;
  height: 30px;
  text-align: center;
  padding: 6px 0;
  font-size: 12px;
  line-height: 1.428571429;
  border-radius: 50%;
}
&#13;
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

<div class="container-fluid" ng-app="app">
  <div class="container" ng-controller="exampleController">
    <div class="row">
      <div class="col-md-2 text-center">
        <button class="btn btn-primary" type="button" ng-click="changeSortOrder()">Change Sort Order</button>
      </div>
      <div class="col-md-10 pull-right">
        <ul class="ul">
          <li ng-repeat="comment in list | orderBy: 'date': reverse track by $index">
            <div class="child-padding">
              <div>
                <span ng-bind="comment.email"></span>
                <span class="pull-right btn-info btn-circle" ng-bind="comment.id"></span>
              </div>
              <div ng-bind="comment.body"></div>
            </div>
            <div ng-bind="comment.name"></div>
          </li>
        </ul>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用Date.parse来解析日期字符串

DEMO JsFiddle

以下代码将发出警告:

  

很快:1

var o = {
 data:[
  {date: "2017-02-24 16:41:51"}, 
  {date: "2017-02-21 16:41:51"}
 ],
 last_clicked: "2017-02-24 12:41:51"
};

function getSoonerLength(data, soonerThan) {
  var count = 0;
  for (var i = 0 ; i < data.length ; i++) {
    var d = Date.parse(data[i].date);
    var than = Date.parse(soonerThan);
    if (d < than)
      count++;
  }
  return count;
}

alert('Sooner times: ' + getSoonerLength(o.data, o.last_clicked))