格式化&比较Angular

时间:2017-10-31 19:13:03

标签: javascript angularjs mongodb date

我正在开发一个高级的Angular待办事项应用程序,可在此处查看:https://personal-organizer.herokuapp.com/

应用程序即将完成,我正在努力显示"逾期","今天到期"和"到期后" List状态中的部分。

为了达到这个目的,我在控制器中生成今天的日期,然后我将它与任务日期进行比较 - 根据日期比较的结果将任务放在适当的部分。

这是我的控制器,我今天正在创建日期:

function ListCtrl(library) {

var vm = this; 

vm.tasks = [];    // array with all tasks

library.getTask(vm.tasks);   // filling the array with data from database
console.log(vm.tasks);

vm.today = new Date().toISOString();   // generating today's date
console.log(vm.today);

}  

这是我的HTML文件,我在其中进行日期比较,以在页面上的相应部分显示任务:

<div class="overdue">
     <div class="alert-danger head">OVERDUE</div>
        <br>
        <task-content ng-repeat="task in ListVM.tasks"
                   task-data="task"
                   ng-if="task.completed === false && task.date < ListVM.today"> 
        </task-content>
     </div>

    <div class="today">
     <div class="alert-warning head">DUE TODAY</div>
            <br>
        <task-content ng-repeat="task in ListVM.tasks"
                   task-data="task"
                   ng-if="task.completed === false && task.date === ListVM.today""> 
        </task-content>
     </div>

    <div class="later">
     <div class="alert-success head">DUE LATER</div>
            <br>
        <task-content ng-repeat="task in ListVM.tasks"
                   task-data="task"
                   ng-if="task.completed === false && task.date > ListVM.today"> 
        </task-content>
     </div>

通过今天的控制台记录日期(vm.today),我得到一个ISO字符串:     2017-10-31T17:31:23.770Z

并且,通过控制台记录我的任务数组(存储在mongo数据库中),结果对象如下:

0:{_id: "59f42085c4efd11d743dd739", todo: "Build another App", date: "2017-10-29T04:00:00.000Z", completed: true, __v: 0, …}
1:{_id: "59efa6440667b62c30028932", todo: "Update Portfolio", date: "2017-11-04T04:00:00.000Z", completed: true, __v: 0, …}
2:{_id: "59f8077a33e2680012bdb190", todo: "Mobile Design", date: "2017-11-10T05:00:00.000Z", completed: false, __v: 0, …}
3:{_id: "59f4cbc487bfab0012cb832b", todo: "Travel to Brazil", date: "2017-11-15T05:00:00.000Z", completed: false, __v: 0, …}

现在,这就是问题所在。每次我重新加载页面并生成一个新的今天日期时,&#34; TxxxZ&#34;字符串的一部分是不同的。

这使得无法找到等于数据库中任务日期的今日日期。即使日,月和年是相同的,&#34; TxxxZ&#34;字符串的一部分将是不同的。

有没有什么方法可以格式化今天日期和任务日期字符串,切断&#34; TxxxZ&#34;部分 - 所以只比较日,月和年?

或者是否有另一种更有效的方法来比较这些日期并获得所需的结果?

***这个问题被标记为重复,但另一个问题的建议答案,方法setHours()不适用于日期作为ISO字符串 - 我需要比较该格式的两个日期。

0 个答案:

没有答案