2017-02-22 148 views
1

我在表单中有四个字段,其中一些包含初始日期和结束日期(dd/mm/yyyy),其他包含开始时间和结束时间(hh:ss) 。moment.js连接日期和时间

这些领域我用得到的日期和时间与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

一个更清洁的解决方案IMO是使用时刻的hourminute getter和setter。

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