在我的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年,时区等,从而使您的任何日期和时间计算都更加准确。