在我的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还可以通过其他方式使您的生活更轻松,因为它会自动处理夏令时,leap年,时区等,从而使您的任何日期和时间计算都更加准确。

09-30 13:21
查看更多