Отсутствие разницы во времени с помощью MomentJS

Привет, ребята, я пытаюсь узнать разницу во времени с помощью MomentJS, чтобы построить часы обратного отсчета. Проблема в том, что я получаю такую ​​ошибку:

Предупреждение об устаревании: предоставленное значение не в признанном формате RFC2822 или ISO. Создание момента возвращается к js Date (), что не является надежным для всех браузеров и версий. Не рекомендуется использовать форматы даты, отличные от RFC2822 / ISO, и они будут удалены в следующем основном выпуске. См. http://momentjs.com/guides/#/warnings/js-date/ для получения дополнительной информации. Аргументы: [0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 00:00, _f: undefined, _strict: undefined, _locale: [объект Object]

Мой журнал console.log NaN

Что я делаю неправильно?

Вот ТС:

now: any;

ngOnInit() {
     this.now = parseInt(moment().format('h'));
}
///
startTimer() {
    const endTime = moment('10AM', ['h:mm A']).format('HH:mm');
    const a = moment(this.now, 'HHmm').diff(endTime, 'hours');
    console.log(a);
}


person MrRobot    schedule 14.04.2020    source источник
comment
не путайте предупреждения с ошибками. Это просто говорит вам, что когда-нибудь эта функция будет удалена. А пока он все еще будет работать.   -  person John Lord    schedule 14.04.2020
comment
Привет, @JohnLord, спасибо, ты прав, я сосредоточился на результатах console.log. Спасибо: D   -  person MrRobot    schedule 14.04.2020


Ответы (2)


Во-первых, вам нужно войти внутрь, чтобы работать, если не ваш конец постоянный. тогда как это можно считать.

startTimer(from,to){
    const now = moment(from, ['h:mm A']).format('H:mm:ss')
    const end = moment(to, ['h:mm A']).format('H:mm:ss');
    var a ;
    if(now>end){
            a = moment.utc(moment(now,['H:mm']).diff(moment(end,['H:mm']))).format("H:mm");
    }
    else{
          a ="-"+ moment.utc(moment(end,['H:mm']).diff(moment(now,['H:mm']))).format("H:mm");
    }
    return a
}

вызовите startTimer('11AM','2PM') на своей html-странице

person pc_coder    schedule 14.04.2020
comment
Привет, @ ağrı, спасибо, но результат неверный :( Так что, если const now = '11:00:00', const endTime = 14:00:00, разница должна быть 3:00:00 правильно? Но вместо этого я получаю '18: 29'. - person MrRobot; 14.04.2020

Используйте subtract вместо diff, например:

const endTime = moment('10:00 AM', ['h:mm A']).format('HH:mm');
const a = moment(moment(this.now, 'h:mm A').subtract(endTime, 'hours')).format('hh');
console.log(a);
person Sharanya    schedule 14.04.2020
comment
Привет, @Sharanya, спасибо, но это тоже не возвращает правильный результат. Так что, если мое время окончания - 14:00, а сейчас 11:00, результат будет 11, а не 3. - person MrRobot; 14.04.2020