Он использует Момент JS.
Насколько я понял, проблема в том, что у него есть только дата и время для манипулирования в формате, подобном: dd.mm.YYYY HH:ii:ss
.
Я рекомендовал перенести дату и время ответа сервера в метку времени, используя JS. Гораздо проще управлять датой и временем, если вы используете метку времени.
ОБНОВЛЕНИЕ
Добавление сюда моего "видения" JS управления датами (мой скрипка ). Не стесняйтесь улучшать это!
const date2timestamp= function(str){
_tmp = str.split(" ");
if(_tmp){
date_arr = ( _tmp[1] ? _tmp[0].split("-") : null );
time_arr = ( _tmp[1] ? _tmp[1].split(":") : _tmp[0].split(":") );
if(!date_arr) {
const today = new Date();
_date = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate(), time_arr[0], time_arr[1], time_arr[2]);
}
else {
_date = Date.UTC(date_arr[0], date_arr[1]-1, date_arr[2], time_arr[0], time_arr[1], time_arr[2]);
}
date_obj = new Date(_date);
return date_obj.getTime()/1000;
}
return false;
}
document.write(
date2timestamp("2020-04-20 08:00:00")+"<br/>",
date2timestamp("2020-04-20 17:00:00")+"<br/>",
date2timestamp("00:03:00")
);
А теперь у вас есть метки времени. Когда вы вычитаете, вы знаете, что 1 мин = 60 с c, поэтому результат равен ((7*60)+30)*60 = date2timestamp("2020-04-20 17:00:00")-date2timestamp("2020-04-20 17:00:00")-(30*60)
БОЛЬШЕ ОБНОВЛЕНИЙ
Но, читая о моменте. js немного, есть еще более простой способ. Руководство для вычитания говорит:
moment().subtract(1, 'seconds');
это означает, что вы должны фактически перевести период запуска в секунды, а затем добавить его в вычитание: moment().subtract((30*60), 'seconds')
или просто добавить (для test) 'миллисекунда' как вторая часть вычитания:
...
ms = moment().subtract(lunchTimeMs, 'milliseconds');
// or use that
ms = moment().subtract(lunchTimeMs/1000, 'seconds);
...