var _MS_PER_HOUR = 1000 * 60 * 60; // 3600000ms per hour
var outputTextWithSign = '{0}{1} Days(s) {2}{3} Hours(s)'; // included sign
var outputTextWithoutSign = '{0} Days(s) {1} Hours(s)'; // no sign
$(function () {
$("#din, #dout").datepicker({
minDate: 0,
dateFormat: 'dd/mm/yy'
});
});
$(document).ready(function () {
$("#diff").focus(function () {
var startDate = $('#din').datepicker('getDate');
var endDate = $('#dout').datepicker('getDate');
// use native set hour to set the hours, assuming val is exact hours
// otherwise derive exact hour from your values
startDate.setHours($('#tin').val());
endDate.setHours($('#tout').val());
// convert date and time to UTC to take daylight savings into account
var utc1 = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(), startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
var utc2 = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());
// get utc difference by always deducting less from more
// that way you always get accurate difference even if in reverse!
var utcDiff = utc1 > utc2 ? utc1 - utc2 : utc2 - utc1;
// get total difference in hours
var msDiff = Math.floor(utcDiff / _MS_PER_HOUR);
// get days from total hours
var dayDiff = Math.floor(msDiff / 24);
// get left over hours after deducting full days
var hourDiff = Math.floor((msDiff - (24 * dayDiff)));
//
// write out results
//
// if you really need to show - sign and not just the difference...
var sign = utc1 > utc2 ? '-' : '';
// format output text - with (-)sign if required
var txtWithSign = outputTextWithSign.format(dayDiff ? sign : '', dayDiff, hourDiff ? sign : '', hourDiff);
...
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Console
Debug your Fiddle with a minimal built-in JavaScript console.