2015-08-16 4 views
3

В моей 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», чтобы иметь возможность форматировать и играть с датами, но я не видел способа добавить время до даты. Это для каждого для каждого, поэтому я не хочу делать никаких предварительных сценариев для этого. Может быть, пользовательский фильтр, чтобы добавить условия к дате?

Очевидно, что мой код выше не работает. Я просто сделал это, чтобы продемонстрировать, чего я хочу.

Любая помощь будет оценена!

UPDATE

Используя эту страницу: 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 

Я предполагаю, что это потому, что я передаю только фильтры, а не созданную дату. Как бы вы передали две переменные? Я думаю, что я все ближе ....

UPDATE 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 
+0

у вас здесь есть несколько вещей; в частности, 'created' не является« длительностью », это« момент »во времени (фиксированный). Этот расчет не даст ожидаемых результатов. Кроме того, вы не используете правильный синтаксис для вызова этого фильтра. – Claies

+0

К. Ну, это совсем не помогло. – moevans

+0

@Claies Проверьте обновление 2 на вопрос. – moevans

ответ

4

Используя метод формирования цепочки с Moment.js, вы можете легко выполнить эти вычисления в одном утверждении. Например:

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

Использование Moment.js также сделает вашу жизнь проще и другими способами, так как он автоматически занимается сбережения дневного света, високосные годы, часовых поясов и т.д., что делает любой из ваших даты и времени вычислений больше точный.

Смежные вопросы