如何计算angularjs的日期差异?

时间:2014-03-01 10:30:20

标签: angularjs angularjs-ng-repeat

我正在使用角度js并尝试显示一个文本,即如果订单是在5天前从今天开始放置的话。因此,如果todaysDate和Order.dateCreated< = 5之间的天数差异,那么我想显示'recent',否则为空:

orderid | dateCreated | status
1       | 27-2-2014   | recent
2       | 27-1-2014   | 

angular script fragment:

<table>
    <tr data-ng-repeat="order in orders" >
        <td>{{order.id}}</td>
        <td>{{order.dateCreated}}</td>
        <td><span ng-show="(getDate()-order.dateCreated)<=5">recent</span></td>
    </tr>
</table>

1 个答案:

答案 0 :(得分:0)

您只需要在标准JavaScript中执行此操作,并向您的范围公开一个方法以允许订单使用:

但是,如果您的日期目前以英国格式存储,则它们会出现在您的问题中。您将无法像这样解析它们,请考虑让您的服务器端代码吐出JavaScript可以解析的标准格式。

如果您发现在执行此操作时遇到问题,无法更改该格式的服务器端响应,或者希望保留格式,则可以使用库来解析它,例如:http://momentjs.com/docs/#/parsing/string-format/这也是有一些不错的工具来检查差异:http://momentjs.com/docs/#/displaying/difference/

$scope.isRecentOrder = function(date) {

    // Assuming date is a string of parsable format: ie. "2014-01-27T01:00:00+00:00"
    var diff = new Date() - new Date(date);

    // Calculate from milliseconds
    var days = ((((diff / 1000) / 60) / 60) / 24);

    return days >= 5;
}

然后您可以使用指令ng-show="isRecentOrder(order.dateCreated)"