如何在JavaScript中将日期与字符串进行比较?

时间:2017-07-14 09:49:06

标签: javascript angularjs json date

我目前正在尝试创建一个自定义过滤器,它将在我的系统中显示最新的最新文件。我正在使用 AngularJS 来过滤我列出的数据。

我遇到的问题是我的日期数据存储为我的json文件中的字符串,我不知道如何过滤它。

我的想法是通过将今天的日期存储为变量并将其与json文件存储日期进行比较来创建自定义过滤器。

以下是我的json文件的外观

{
    "data": [

        {
            "title": "Something Exciting",
            "description": "A TV show about something really exciting.",
            "date": " 06/2017",
            "link": "../pdf/whoReadsBooksAnyway.pdf"
        },
        {
            "title":"Stranger Things",
            "description":"Getting back that 80's Steven King Vibe",
            "date": "05/2017",
            "link": "../pdf/AllAlongTheWatchTower.pdf"
        }
    ]
}

我需要按最新的date字段显示项目,因此我开始创建自定义过滤器:

 app.filter('dateFilter', function($scope){

         $scope.getDatetime = new Date();

         var aaa = "../../../views/TvShows/json/shows.json"
         $http.get(aaa).then(function maybe(response, date){
                $scope.data = reseponse.data.data;
            });

        if($scope.getDatetime < $scope.data.date){
            return $scope.myFilter;
        } else{
            console.log("it didn't work");
        }
    });

过滤器背后的想法是使用http请求捕获日期并将其与$scope.GetDatetime(当前日期)进行比较。我不确定如何构建过滤器。 xstatsx只是我从初始http get请求返回的$scope对象。

   var xurlx = '../../../views/TvShows/json/shows.json'
            $http.get(xurlx).then(function(response, data){
                $scope.xstatsx = response.data.data; 
            });

在我的HTML中,我使用它来过滤并仅显示最近的日期:

  <div class="well well-lg" style="display: inline-block;" ng-repeat="n in xstatsx | orderBy: '-date'" ng-show='0 == $index'>
  

如何过滤输出,使其仅显示最新的输出   列出的文件?

1 个答案:

答案 0 :(得分:1)

试试这个:

 reseponse.data.data.forEach((item)=>{
  let date = new Date(),
    split = item.date.split("/");
  date.setDate(1);
  date.setMonth(+(split[0]) - 1);
  date.setYear(split[1]);
  item.sort = date;
});  
  

并在html中使用 orderBy过滤器排序键

<div ng-repeat="n in xstatsx | orderBy : 'sort' " ></div>