2017-02-22 69 views
1

У меня есть четыре поля в форме, некоторые из которых содержат начальную дату и дату окончания (dd/mm/yyyy), а остальные содержат время начала и время окончания (hh: ss) ,moment.js concatenate дата и время

Значение этих полей я использую, чтобы получить дату и время с moment.js, такие как это:

initialdate = moment($('input#start_date').val(), 'DD/MM/YYYY'); 
start_time = moment($('input#start_time').val(), 'HH:mm'); 
enddate = moment($('input#enddate').val(), 'DD/MM/YYYY'); 
end_time = moment($('input#end_time').val(), 'HH:mm'); 

То, что я намерен это то получить разницу в секундах между двумя датами, сцеплению дата и время начала и дата и время окончания. Я пытался это сделать, но безрезультатно:

start = initialdate + start_time; 
end = enddate + end_time; 
tracker = moment.duration(end.diff(start)).asSeconds(); 

ответ

5

терпеть неудачу примеряет конкатенации значения, тест с чем-то вроде этого:

let initialdate = '2016-10-01'; 
let start_time = '19:04:10'; 
let enddate = '2016-10-01'; 
let end_time = '19:04:20'; 

let datetimeA = moment(initialdate + " " + start_time); 
let datetimeB = moment(enddate + " " + end_time); 

console.log(datetimeA.format()); 
console.log(datetimeB.format()); 

let datetimeC = datetimeB.diff(datetimeA, 'seconds'); 

console.log(datetimeC); 
+0

'initialdate + start_date' терпит неудачу, поскольку они являются одновременно объектами Moment в этой точке. –

9

сцепить даты и времени строки и анализировать их как один, например

var date = '23/02/2017'; 
 
var time = '15:42'; 
 

 
var dateTime = moment(date + ' ' + time, 'DD/MM/YYYY HH:mm'); 
 

 
console.log(dateTime.format('YYYY-MM-DD HH:mm'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>

3

Гораздо чище решение ИМО использовать секундный hour и minute добытчиков и сеттер.

let a = moment() 
let b = moment().add(3, 'hour').add(37, 'minute') //b is the time portion 
a.hour(b.hour()).minute(b.minute()) 

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

  • Нет связанных вопросов^_^