JavaScript Moment.js пытается получить разницу между двумя датами

1

Я пытаюсь получить разницу между 2 datetimestamps, которые выглядят так:

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

Я хочу показать разницу во времени в днях - Часы - минуты - секунды осталось.

До сих пор я это делал, но всегда возвращал 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();
  • 0
    Момент может дать разницу, только если он меньше 24 часов. Вы должны написать свой собственный расчет
  • 4
    Ваши метки времени не соответствуют формату, который вы пытаетесь проанализировать.
Показать ещё 2 комментария
Теги:
datetime
date
momentjs
ticker

1 ответ

1
Лучший ответ

на вашей функции calcDifference вы можете сделать что-то вроде этого

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!');

в случае, если значения из элементов даты выпуска и текущей даты имеют формат 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');

Здесь рабочий код

Я надеюсь, что это помогает! :)

  • 0
    Удивительно, это сработало отлично, как бы вы сделали тикер, скажем, который отсчитывает секунды, затем минуты и так далее?
  • 0
    @tigerel конечно! я не люблю тебя так сильно портить, но у меня сегодня есть энергия :) дай мне минутку
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню