Reputation: 281
I´m trying to calculate the time between two dates and the time to get the traveltime in days and in hours(rounded).
I use 4 input from bootstrap (including datepicker) with the formats dd:mm:yy
and hh:mm
Markup:
<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:
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";
}
The question now is: How can I calculate the hours_difference.
For example:
Difference Date: 20.03.2013 Time: 10:00 22.03.2013 Time: 11:45 = result 2 days 2 hours (rounded)?
Is there any simple code or plug-in?
Upvotes: 1
Views: 748
Reputation: 5655
Updated Answer as per comment and added DEMO
<input type="time" id="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">
You have for instead of id only for travel_end_time
changed that
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";
}
Upvotes: 1
Reputation: 2272
//
// 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.
Upvotes: 0
Reputation: 12040
You should need something like this maybe?
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();
}
}
Code taken from here. You can also have a read this post
Upvotes: 0