使用 angular 将时间添加到日期

Add time to date with angular

在我的 Firebase 中我有:

Firebase generated date for a created day.

Terms set by the user when the above was generated. 

例如我有:

1439612582756 // formats to: Aug 14, 2015

15 // Formats to: "Net 15" in my code 

我的代码如下所示:

<td>{{invoice.settings.created | date}}</td>

<td>{{invoice.settings.created + invoice.settings.terms | date}}</td>

我已经安装了 moment.js 和 'angular-moment.js' 以便能够格式化和使用日期,但我没有找到向日期添加时间的方法。这是针对每个对象的,所以我不想为此做任何预先编写的脚本。也许是一个自定义过滤器来将条款添加到日期?

显然,我上面的代码不起作用。我这样做只是为了证明我想要什么。

如有任何帮助,我们将不胜感激!

更新

使用此页面:http://momentjs.com/docs/#/durations/add/ 我想出了这个过滤器:

.filter('dateTerms', function() {
    return function(created, terms) {
        var a = moment.duration(created, 'd');
        var b = moment.duration(terms, 'd');
        return a.add(b).days();
    }
})

但是当我调用它时,我总是以 0?

结尾
<td>{{invoice.settings.created | date}}</td>
<td>{{invoice.settings.terms | dateTerms}}</td> // This line

我猜这是因为我只向过滤器传递条款而不是创建日期。你将如何传递两个变量?我想我越来越近了....

更新 2

我把这些时刻都扔掉了。这就是我现在拥有的:

.filter('dateTerms', function() {
    return function(input, created) {
        var date = new Date(created*1000);
        date.setDate(date.getDate() + input);
        return (date.getMonth()+1)+'/'+ date.getDate() +'/'+date.getFullYear();
    }
})

然后在我的 html:

<td>{{invoice.settings.terms | dateTerms:1439746291480}}</td>

1439746291480 converts to `Aug 16, 2015`

这导致:

8/24/47601

使用 Moment.js 的方法链接,您可以轻松地在单个语句中执行此类计算。例如:

return moment(new Date(created)).add(terms, 'days').format('MM/DD/YYYY');

使用 Moment.js 还会让您的生活在其他方面更轻松,因为它会自动处理夏令时、闰年、时区等,使您的任何日期和时间计算更加准确。