So This is my first time using Moment.js and I encountered the following problem, so I have this following dates:
now: 2017-01-26T14:21:22+0000
expiration: 2
this will give you the right values and remove the headache of manual calculations
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>
note that the substract
operations will mutate the original exp
value, so don't go passing it around expecting it to be the original date
For more information check the documentation 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>
Try my solution. I think that is it:
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;
MomentJS can calculate all that for you without you doing any logic.
.days()
, .hours()
of the duration that you want.Note: You can also express the entire duration .asDays()
, .asHours()
etc if you want.
const now = moment("2017-01-26T14:21:22+0000");
const expiration = moment("2017-01-29T17:24:22+0000");
// get the difference between the moments
const diff = expiration.diff(now);
//express as a duration
const diffDuration = moment.duration(diff);
// display
console.log("Days:", diffDuration.days());
console.log("Hours:", diffDuration.hours());
console.log("Minutes:", diffDuration.minutes());
<script src="https://momentjs.com/downloads/moment.js"></script>