Моментальная разница во времени в часах неверна

#javascript #datetime #momentjs

#javascript #дата и время #momentjs

Вопрос:

Я пытаюсь найти разницу во времени в часах между двумя временами, но почему-то это неправильно. Возможно, я делаю что-то не так, но не могу понять, где. Разница во времени, которую я хочу, — это с определенной даты в любое время до некоторой конечной даты в 00:00:00

Ниже я нахожу разницу:

 async function getSubscriptionValidity(org_id) {
    // Get expiry date of the organisation
    let validity    = await Customers.findOne({ orgId: org_id }, "expiresOn -_id");
    let now         = moment();
    let expiryDate  = moment(validity.expiresOn).startOf("day");

    // Calculate time remaining to expiry in hours
    let difference = expiryDate.diff(now, "hours");

    console.log(now);
    console.log(expiryDate);
    console.log(difference);
}
  

Результат

 moment("2019-04-09T21:30:43.579") // Start Date and time
moment("2019-04-10T00:00:00.000") // End date and time
2 // Shouldn't this be 3 ?
  

Ответ №1:

По умолчанию moment#diff усекает результат до нуля знаков после запятой, возвращая целое число. Если вам нужно число с плавающей запятой, передайте true в качестве третьего аргумента.

https://momentjs.com/docs/#/displaying/difference/