gpt4 book ai didi

javascript - 使用 Angular 添加时间到日期

转载 作者:行者123 更新时间:2023-11-29 10:11:48 24 4
gpt4 key购买 nike

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

关于javascript - 使用 Angular 添加时间到日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com