tigerel
tigerel

Reputation: 337

JavaScript Moment.js trying to get the difference between 2 datetimes

I am trying to get the difference between 2 datetimestamps which look like These:

2018-08-22 00:00:00 
2018-08-11 15:34:31

I want to Show the difference in time in days - Hours - minutes - seconds left.

So far I did this but it Always return NaN:

import moment from 'moment';

const calc = {

    render () {
        moment().format();
        this.calcDifference();
    },

    calcDifference() {
        let releaseDate = document.getElementById('release-at').value;
        let currentDate = document.getElementById('current-date').value;

        let ms = moment(
            releaseDate,
            "DD-MM-YYYY HH:mm:ss").diff(moment(currentDate,
            "DD-MM-YYYY HH:mm:ss")
        );
        let d = moment.duration(ms);
        let s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

        console.log(ms);
        console.log(d);
        console.log(s);
    }

};

    calc.render();

Upvotes: 1

Views: 202

Answers (1)

Theo
Theo

Reputation: 2042

on your calcDifference function, you can do something like this

let releaseDate = moment('2018-09-22 00:00:00');
let currentDate = moment('2018-08-11 15:34:31');

const diff = releaseDate.diff(currentDate);
const diffDuration = moment.duration(diff);

console.log(`
  ${diffDuration.months()} months
  ${diffDuration.days()} days
  ${diffDuration.hours()} hours
  ${diffDuration.minutes()} minutes
  ${diffDuration.seconds()} seconds left!`);

in case values from release-at and current-date elements have format DD-MM-YYYY HH:mm:ss, use

let releaseDate = moment(document.getElementById('release-at').value, 'DD-MM-YYYY HH:mm:ss');
let currentDate = moment(document.getElementById('current-date').value, 'DD-MM-YYYY HH:mm:ss');

Here's a working codepen

I hope it helps! :)

Upvotes: 1

Related Questions