2016-07-14 103 views
3

進入我有我在課堂時間跨度數據庫收到兩次如何比較時間跨度與時間跨度從數據庫

begTime = current.data('bgtime'); 
        endTime = current.data('endtime'); 

我比較他們的用戶

$('#timeToStart').on('change', function() { 
      var startTime = $('#timeToStart').val(); 
      sTimeHire = startTime; 


     }); 
     $('#timeToEnd').on('change', function() { 
      var endTime = $('#timeToEnd').val(); 
      eTimeHire = endTime; 
     }); 


if (begTime > sTimeHire || endTime < eTimeHire) { 
         alert("yayy it works"); 

        } 

進入對於某些兩次因爲如果sTimeHire和begTime都是晚上7點,它會進入if語句,即使它只應在begTime更大時纔會進入?

但是,如果我單獨試驗endTime,它會起作用,如果endTime和eTimeHire都是晚上9:00,它就不會進入if語句。

我注意到begTime不附加任何秒的時候我做
alert(begTime)

是有可能,它被認爲比sTimeHire的07:00:00因爲如此嗎?

+0

將您的時間轉換爲unix時間戳,然後您將比較整數。從那裏你可以轉換回你想要的任何格式。 – DigitalDesignDj

+0

你從'current.data('bgTime')'得到了什麼字符串,以及用戶能夠進入'timeToStart'的值是什麼?因爲'TimeSpan'是一個.NET結構,它只是表示一段時間(即5小時30分32秒),而不是特定的時間(即5:30:32 am)。 –

回答

0

您正在使用JavaScript和比較時間。使用Date對象來提供幫助。

var begTime = new Date(current.data('bgtime')).getTime(), 
    endTime = new Date(current.data('endtime')).getTime(); 

$('#timeToStart').on('change', function() { 
    var startTime = new Date($('#timeToStart').val()).getTime(); 
    sTimeHire = startTime; 
}); 

$('#timeToEnd').on('change', function() { 
    var endTime = new Date($('#timeToEnd').val()).getTime(); 
    eTimeHire = endTime; 
}); 


if (begTime > sTimeHire || endTime < eTimeHire) { 
    alert("yayy it works"); 
} 

未經測試,但這應該有助於您理解。

回覆:我的意見,這不是嚴格意義上的UNIX時間戳,因爲它在ms,而不是s,但因爲它是到處都一樣,同樣的想法適用,整數時間

編輯:建議從.now()切換到.getTime()。

+1

我可以問你爲什麼使用'now()'?這被定義爲Date對象的靜態成員,而不是實例方法。通常可以在Date對象上使用'valueOf()'或'getTime()'來獲得自紀元以來的毫秒數。 –

+0

感謝您的回答!我得到這個錯誤:Uncaught TypeError :(中間值).now不是一個函數 –