2017-01-26 4 views
3

Так Это мой первый раз, используя Moment.js и я столкнулся со следующей проблемой, так что у меня это следующие даты:Получите дни, часы и минуты Moment.js

now: 2017-01-26T14:21:22+0000 
expiration: 2017-01-29T17:24:22+0000 

Что я хочу получить является:

Day: 3 
Hours: 3 
Mins: 3 

Я попытался следующий код:

const now = moment(); 
const exp = moment(expire_date); 
console.log(expire_date); 
days = exp.diff(now, 'days'); 
hours = exp.diff(now, 'hours') - (days * 24); 
minutes = exp.diff(now, 'minutes') - ((days * 1440) + (hours * 24) * 60); 

Я знаю, что я сделал что-то неправильно (возможно, мой расчет или I U sed неправильный метод), но я не могу понять, что это такое.

ответ

2

это даст вам правильные значения и снять головную боль ручных расчетов

let expiration = "2017-01-29T17:24:22+0000" 
 
const now = moment(); 
 
const exp = moment(expiration); 
 

 
console.log(exp.format()); 
 

 
days = exp.diff(now, 'days'); 
 
hours = exp.subtract(days, 'days').diff(now, 'hours'); 
 
minutes = exp.subtract(hours, 'hours').diff(now, 'minutes'); 
 

 
console.log(days, hours, minutes)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

отмечают, что substract операции будут мутировать исходное exp значение, так что не пропуская его вокруг ожидая, что это будет исходная дата

9

MomentJS может рассчитать все, что для вас с вами, используя любую логику.

  • Сначала найдите разницу между двумя моментами
  • Экспресс это как продолжительность
  • Затем отобразить какой компонент .days(), .hours() продолжительности, что вы хотите.

Примечание: Вы также можете выразить всю продолжительность .asDays(), .asHours() и т.д., если хотите.

const now = moment("2017-01-26T14:21:22+0000"); 
 
const expiration = moment("2017-01-29T17:24:22+0000"); 
 
const diff = expiration.diff(now); 
 
const diffDuration = moment.duration(diff); 
 

 
console.log("Days:", diffDuration.days()); 
 
console.log("Hours:", diffDuration.hours()); 
 
console.log("Minutes:", diffDuration.minutes());
<script src="https://momentjs.com/downloads/moment.js"></script>

0

Для получения дополнительной информации обратитесь к документации https://momentjs.com/docs/#/displaying/difference/

var now = moment() 
 
var exp = moment().add(1,'days') 
 
var days = exp.diff(now, 'days') 
 
var months = exp.diff(now, 'months') 
 
var years = exp.diff(now, 'years', true) //float number 
 

 
console.log(now,exp,days, months, years)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

0

Попробуйте мое решение. Я думаю, что это:

var now = moment("2017-01-26T14:21:22+0000"); 
    var expiration = moment("2017-01-29T17:24:22+0000"); 
    var minsAverage = expiration.diff(now, "minutes"); 

    var min = parseInt(minsAverage % 60); 
    var hours = parseInt(minsAverage/60); 
    var days = parseInt(hours/24); 
    hours = hours - 24*days;