使用 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 还会让您的生活在其他方面更轻松,因为它会自动处理夏令时、闰年、时区等,使您的任何日期和时间计算更加准确。
在我的 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 还会让您的生活在其他方面更轻松,因为它会自动处理夏令时、闰年、时区等,使您的任何日期和时间计算更加准确。