2017-02-22 150 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())