2017-01-21 3 views
0

У меня есть требование найти разницу между 2 раза (в формате HH: MM: SS).Найти разницу во времени между 2 раза, используя moment.js

Необходимо получить разницу в секундах.

var a = moment('21:04:59'); 
var b = moment('21:04:00'); 

a - b = 59 seconds 

Я попытался следующие Its работал для меня с форматом даты и времени, но не раз подал в одиночку.

var a = moment('2016-06-06T20:30:59'); 
var b = moment('2016-06-06T20:30:00'); 

console.log(a.diff(b, 'seconds')) // 59 seconds 
+0

Без даты, как вы знаете, те времена 59 секунды друг от друга? – jonrsharpe

+0

посмотрите на @pranal patev answer, он прав – ValLeNain

ответ

2

вы должны пройти время, как в следующем moment

var a = moment({ 
    h: 21, 
    m: 04, 
    s: 59 
}); 
var b = moment({ 
    h: 21, 
    m: 04, 
    s: 00 
}); 

ВЫХОДА
console.log(a.diff(b, 'seconds')) // 59 секунд

+0

Код в вашем ответе работает, но OP имеет строковый ввод, поэтому ему нужно разбить первую входную строку на части, а затем использовать заданный код.Обратите внимание, что момент имеет конструктор ['moment (String, String);'] (http://momentjs.com/docs/#/parsing/string-format/), который должен использоваться для анализа строки, не относящейся к ISO 8601 формат. – VincenzoC

0

В ядре, moment.js не имеет поддержки для данных времени. Даже если вы предоставляете данные только времени, он попытается сохранить «сегодня» в качестве даты.

Но все же вы можете это сделать.

легального путь

var a = moment('21:04:59', 'HH::mm::ss'); 
var b = moment('21:04:50', 'HH::mm::ss'); 

alert(a-b); // returns miliseconds 

Tricky Alternative

var dummyDate = '2016-05-05T'; // any date 
var a = moment(dummyDate + '21:04:59'); 
var b = moment(dummyDate + '21:04:00'); 
console.log(a.diff(b, 'seconds')) 
+0

Обратите внимание, что в [синтаксическом анализе моментов] (http://momentjs.com/docs/#/parsing/string-format/) нет символа 'ii', вместо этого вы должны использовать' ss'. – VincenzoC

+0

Спасибо за предупреждение. Я обновил свой пост. –

0

Вам просто нужно добавить правильный формат ('HH:mm:ss') при разборе вашей строки в объект момента.

Ваш код дает Предупреждение об изгнании, потому что вы пытаетесь разобрать строку, которая не находится в известном формате ISO 8601. Как documentation states: Предупреждение

: поддержки браузера для разбора строк противоречива. Поскольку нет спецификаций, по которым должны поддерживаться форматы, то, что работает в некоторых браузерах, не будет работать в других браузерах.

Для последовательного анализа результатов, отличных от строк ISO 8601, вы должны использовать String + Format.

Обратите внимание, что, поскольку вы не предоставляете информацию о части дня, момент создает объект с текущей датой, месяцем и годом.

Вот рабочий пример:

var a = moment('21:04:59', 'HH:mm:ss'); 
 
var b = moment('21:04:00', 'HH:mm:ss'); 
 
console.log(a.diff(b, 'seconds'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

Забавная вещь: Я дал вам подобное answer немного времени назад

Смежные вопросы