使用棱角

时间:2015-08-16 17:09:45

标签: javascript angularjs firebase momentjs angularfire

在我的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'以便能够格式化和播放日期,但我没有看到为日期添加时间的方法。这是for-each,所以我不想为此做任何预编写脚本。也许自定义过滤器将条款添加到日期?

显然,我上面的代码不起作用。我这样做是为了展示我想要的东西。

任何帮助将不胜感激!

更新

使用此页面: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

1 个答案:

答案 0 :(得分:4)

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

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

使用Moment.js还可以让您的生活更轻松,因为它可以自动处理夏令时,闰年,时区等,使您的日期和时间计算更加准确。