如何比较AngularJS中的两个日期?

时间:2016-06-08 15:55:25

标签: javascript angularjs date compare

首先,我只想说我搜索了Stack Overflow并且无法找到我特定问题的答案,但是如果我错过了一个并且这是重复的话我会道歉。

所以我使用AngularJS创建了一个任务管理器,我有一个包含任务列表的表。这是我的表格代码:

<thead>
    <tr>
        <th><b>ID</b></th>
        <th><b>Title</b></th>
        <th><b>Start Date</b></th>
        <th><b>End Date</b></th>
        <th><b>Type</b></th>
        <th></th>
    </tr>
</thead>
<tbody>
    <tr ng-repeat="task in tasks track by $index">
        <td>{{task.id}}</td>
        <td>{{task.title}}</td>
        <td>{{task.start_date}}</td>
        <td>{{task.end_date}}</td>
        <td>{{task.type}}</td>
        <td><a ng-click="remove(task)"<i class="material-icons">clear</i></a></td>
    </tr>
</tbody>

如您所见,每个任务都有ID,标题,开始日期,结束日期,类型,然后表格每行都有一个按钮来删除任务。

这里是函数remove(task)的代码:

$scope.remove = function(task)
{
    $scope.tasks.splice($scope.tasks.indexOf(task), 1);
};

现在这很重要。如果当前日期晚于结束日期,则应该删除该任务没有问题。但是,如果当前日期是之前和结束日期,程序需要启动一个带有字段的弹出窗口,以便用户可以写出提前取消任务的理由。

所以,我的问题是:如何将结束日期与当前日期进行比较?

不要担心弹出窗口,我只需要帮助#34; if语句&#34;。我自己写弹出窗口。

我也有 moment.js ,所以如果你愿意,可以使用它。

编辑:这是我的日期格式化方式。我有一个datepicker,它以这种格式给出日期:YYYY-MM-DD。然后我有一个时间戳,以这种格式给出时间:hh:mm。这就是我将两者结合起来的方式:

$scope.tasks.push({
            'id': tasks.id,
            'title': tasks.title,
            'start_day': tasks.start_day,
            'start_time':tasks.start_time,
            'start_date':tasks.start_day + " " + tasks.start_time,
            'end_day': tasks.end_day,
            'end_time': tasks.end_time,
            'end_date':tasks.end_day + " " + tasks.end_time,
            'type': tasks.type
        });

因此,datepicker日期存储在tasks.end_day中,时间戳时间存储在tasks.end_time中,我将它们与'end_date':tasks.end_day + " " + tasks.end_time合并,因此最终日期的格式为 YYYY-MM-DD hh:mm

1 个答案:

答案 0 :(得分:2)

来自moment.js documentation

var isSameOrBefore = moment().isSameOrBefore(task.end_date);
var isBefore = moment().isBefore(task.end_date);

在没有参数的情况下调用moment()时,它会使用当前日期。