Краткий ответ:
Как сказал Джон Мадхаван-Риз в своем ответе, вы должны использовать момент Продолжительность , чтобы представить разницу между двумя моментами во времени.
Проблема в примере кода:
В своем коде вы создаете объект момента из разницы между expiration
и today
.Это значение интерпретируется моментом как число миллисекунд с начала эпохи Unix (см. moment(Number)
), поэтому вы создаете моментный объект для случайного дня около 1 января 1970 года.(см. вывод moment(expiration- today).format()
).Токен D
в format()
обозначает День месяца, поэтому он выводит «неправильный» .
Мое предлагаемое решение:
Вы можете вычислить разницу, используя момент * '1027 *diff()
, затем вы можете создать длительность, используя moment.duration(Number)
.
Наконец, вы можете получить желаемый результат, используя плагин момента-продолжительности-формата (автор Джон Мадхаван-Риз: D)
Вот живой пример:
function getDiff(value) {
var expiration= moment(value); // Parse input as momement object
var today = moment(); // get now value (includes current time)
// Calculate diff, create a duration and format it
var dayToExpiration = moment.duration(Math.abs(today.diff(expiration))).format('D[days], H[hours]');
console.log(today.format('DDMMYYYY') + " : " + expiration.format('DDMMYYYY'));
console.log(dayToExpiration);
}
getDiff('2018-10-28');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/2.2.2/moment-duration-format.min.js"></script>