Javascript中的日期比较类似于字符串比较

Date comparison in Javascript acts like a string comparison

本文关键字:比较 类似于 字符串 日期 Javascript      更新时间:2023-09-26

我使用的是Angular,在我的控制器中有以下过滤功能:

 $scope.filterDocuments = function (row) {
          var dateCompare = $filter('date')(row.FilingDate, 'MM/dd/yyyy');
          if (dateCompare >= $scope.dateLimit) {
              if ($scope.query === '' || $scope.query === undefined) {
                  return true;
              } else if (angular.lowercase(row.Description).indexOf($scope.query) !== -1) {
                  return true;
              } else {
                  return false;
              }
          } else {
              return false;
          }
      };

此函数用于在ng重复期间过滤数据。实际情况是,日期比较就像字符串比较。我已经尝试将代码更改为:

 $scope.filterDocuments = function (row) {
          var dateCompare = $filter('date')(row.FilingDate, 'MM/dd/yyyy');
          if (dateCompare.getTime() >= $scope.dateLimit.getTime()) {
              if ($scope.query === '' || $scope.query === undefined) {
                  return true;
              } else if (angular.lowercase(row.Description).indexOf($scope.query) !== -1) {
                  return true;
              } else {
                  return false;
              }
          } else {
              return false;
          }
      };

而且失败得更糟!

如何解决这个问题,使日期比较工作,我可以根据日期进行筛选?

我在另一个线程上找到了答案(现在找不到)。我正在使用以下功能:

function stringToDate(_date, _format, _delimiter) {
    var formatLowerCase = _format.toLowerCase();
    var formatItems = formatLowerCase.split(_delimiter);
    var dateItems = _date.split(_delimiter);
    var monthIndex = formatItems.indexOf("mm");
    var dayIndex = formatItems.indexOf("dd");
    var yearIndex = formatItems.indexOf("yyyy");
    var month = parseInt(dateItems[monthIndex]);
    month -= 1;
    var formatedDate = new Date(dateItems[yearIndex], month, dateItems[dayIndex]);
    return formatedDate;
}

这需要一个日期字符串并返回一个格式化的日期。然后我用它来做比较:

if (stringToDate(dateCompare, 'mm/did/yyyy', '/') >= stringToDate($scope.dateLimit, 'mm/did/yyyy', '/')) {

它就像一个符咒:)