2017-01-17 4 views
0
moment(this.endEpoch).subtract(3, 'month').unix() 

this.endEpoch сегодняшняя дата или время этой публикации: 1484670569Почему момент jS дает мне отрицательный момент start_epoch здесь?

Это должно произвести дату start_epoch, которая находится всего в 3 месяца назад, однако он создает отрицательное число :(-6467730

Любую идею что происходит здесь не так?

Moment Docs on substract

мама ent(). subtract ('seconds', 1); // Устаревший в 2.8.0

момент(). Вычесть (1, 'секунды');

Я пробовал обе версии, и они производят одинаковый отрицательный номер start_epoch.

+0

умножить 'this.endEpoch' на 1000, потому что момент принимает метку времени с миллисекунд, в то время как вы передаете его значение в секундах –

+0

она не должна быть' months' (множественное число)? – sweaver2112

ответ

3

Вы передаете метку времени, которая содержит значение в секундах, но момент нуждается в миллисекунды тоже, так что этот код должен работать правильно:

moment(this.endEpoch * 1000).subtract(3, 'month').unix() 

или использовать unix() метод на нем:

moment.unix(this.endEpoch).subtract(3, 'month').unix() 
+0

Ах спасибо! Полезно знать: D да момент .unix решает преобразование строки в число и проблему milisecs. –

1

Вы должны использовать moment.unix вместо moment(Number)

var endEpoch = 1484670569; 
 
console.log(moment(endEpoch).format()); 
 
console.log(moment.unix(endEpoch).format()); 
 
var res = moment.unix(endEpoch).subtract(3, 'month').unix() 
 
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

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