2013-05-27 155 views
1

我試圖計算兩個日期之間的時間以及獲得 天和幾小時(四捨五入)的旅行時間的時間。計算兩個日期時間之間的時間

我使用從自舉4輸入(包括日期選擇器)與格式dd:mm:yyhh:mm

標記:

<input type="date" name="travel_begin_date" id="travel_begin_date" placeholder="Text input" class="span12"> 
<input type="time" name="travel_begin_time" id="travel_begin_time" placeholder="Text input" class="span12"> 
<input type="date" id="travel_end_date" name="travel_end_date" placeholder="Text input" class="span12"> 
<input type="time" for="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12"> 

<div id="days_difference"></div> 
<div id="hours_difference"></div> 

功能:

function calculateDifference() { 
console.log('calculate difference start...'); 
var startDate = $("#travel_begin_date").val(); 
var startTime = $("#travel_begin_time").val(); 
var endDate = $("#travel_end_date").val(); 
var endTime = $("#travel_end_time").val(); 

var stDate = new Date(startDate); 
var enDate = new Date(endDate); 

var diff=enDate.getTime() - stDate.getTime(); 
var differenceDays = (diff)/(1000 * 60 * 60 * 24); 
var differenceHours= ((diff) % (1000 * 60 * 60 * 24))/ (1000 * 60 * 60); 

document.getElementById('days_difference').innerHTML += differenceDays + " days and"; 
document.getElementById('hours_difference').innerHTML += differenceHours + " hours"; 

} 

現在的問題是:我如何計算hours_differenc即

例如:

差分日期:二零一三年三月二十零日 時間:10:00 2013年3月22日 時間:11:45 =結果2天2小時(四捨五入)?

有沒有簡單的代碼或插件?

回答

1

更新的答案根據註釋和補充DEMO

<input type="time" id="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12"> 

您有而不是ID只爲travel_end_time改變了

function calculateDifference() { 
    console.log('calculate difference start...'); 
    var startDate = $("#travel_begin_date").val(); 
    var startTime =(''+ $("#travel_begin_time").val()).split(":"); // Used split 

    var endDate = $("#travel_end_date").val(); 
    var endTime = (''+ $("#travel_end_time").val()).split(":");// Used split 

    var stDate = new Date(startDate); 
    stDate.setHours(parseInt(startTime[0]));// Set Hours 
    stDate.setMinutes(parseInt(startTime[1]));// Set Minutes 
    var enDate = new Date(endDate); 
    enDate.setHours(parseInt(endTime[0]));// Set Hours 
    enDate.setMinutes(parseInt(endTime[1]));// Set Minutes 


    var diff=enDate.getTime() - stDate.getTime(); 
    var differenceDays = (diff)/(1000 * 60 * 60 * 24); 
    var differenceHours= ((diff) % (1000 * 60 * 60 * 24))/ (1000 * 60 * 60); 

    document.getElementById('days_difference').innerHTML += Math.round(differenceDays) + " days and"; 
    document.getElementById('hours_difference').innerHTML += Math.round(differenceHours) + " hours"; 

} 
+0

謝謝。我已將我的功能更改爲上述編輯的代碼。如果我這樣計算:旅行開始(從輸入值)2013-05-20在00:00(不同的輸入!!),旅行結束(值從輸入)2013-05-23在07:00(不同的輸入! )。結果是3天(多​​數民衆贊成!)和0小時(這是錯誤的,應該是7小時) - > 3天和7小時。問題是,我必須計算與4輸入 – user1735856

+0

,工程!非常感謝!!! – user1735856

0

你應該需要這樣的可能?

var DateDiff = { 

    inDays: function(d1, d2) { 
     var t2 = d2.getTime(); 
     var t1 = d1.getTime(); 

     return parseInt((t2-t1)/(24*3600*1000)); 
    }, 

    inWeeks: function(d1, d2) { 
     var t2 = d2.getTime(); 
     var t1 = d1.getTime(); 

     return parseInt((t2-t1)/(24*3600*1000*7)); 
    }, 

    inMonths: function(d1, d2) { 
     var d1Y = d1.getFullYear(); 
     var d2Y = d2.getFullYear(); 
     var d1M = d1.getMonth(); 
     var d2M = d2.getMonth(); 

     return (d2M+12*d2Y)-(d1M+12*d1Y); 
    }, 

    inYears: function(d1, d2) { 
     return d2.getFullYear()-d1.getFullYear(); 
    } 
} 

代碼取自here。您也可以閱讀this post

+0

!此示例無法正常工作,例如2017年3月20日至2017年3月27日之間的天數差異爲6天而不是7天。 問題是(t2-t1)/(24 * 3600 * 1000)= 6.958333333333333和 parseInt((t2-t1)/(24 * 3600 * 1000))返回6 – okarpov

0
// 
// Any source code blocks look like this 
// 
     t1="10/10/2006" ; 

     t2="15/10/2006"; 


    //Total time for one day 
     var one_day=1000*60*60*24; 
//Here we need to split the inputed dates to convert them into standard format 
for furter execution 
     var x=t1.split("/");  
     var y=t2.split("/"); 
    //date format(Fullyear,month,date) 

     var date1=new Date(x[2],(x[1]-1),x[0]); 

     var date2=new Date(y[2],(y[1]-1),y[0]) 
     var month1=x[1]-1; 
     var month2=y[1]-1; 

     //Calculate difference between the two dates, and convert to days 

     _Diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 
//_Diff gives the diffrence between the two dates. 
+0

這個函數只計算日期和月份?對? – user1735856

相關問題