Javascript Course

The function presented in this page, diffDateTime(), can be used to get the difference between 2 dates, time and date in JavaScript. This function receives two parameters: the start and ending datetime. It can be used various date / time formats: Unix Timestamp (in milliseconds), or a string containing an English datetime format. It can also be used a string with the words: NOW for current date-time, and TOMORROW for the next day (the 0:0:1 time); see in the examples presented after the code of this function.

Function to get the difference between 2 datetimes

Returns an object containing date and time difference: number of days, hours, minutes, seconds, total hours, total minutes, and total seconds (see the comments in code).
/* Function to calculate time difference between 2 datetimes (in Timestamp-milliseconds, or string English Date-Time)
 It can also be used the words: NOW for current date-time, and TOMORROW for the next day (the 0:0:1 time)
 Returns an object with this items {days, hours, minutes, seconds, totalhours, totalmin, totalsec}
*/
function diffDateTime(startDT, endDT){
 // JavaScript & jQuery Course - https://coursesweb.net/javascript/
  // if paramerer is string, only the time hh:mm:ss (with, or without AM/PM), create Date object for current date-time,
  // and adds hour, minutes, seconds from paramerer
  //else, if the paramerer is "now", sets Date object with current date-time
  //else, if the paramerer is "tomorrow", sets Date object with current date, and the hour 24 + 1 second
  // else create Date object with date time from startDT and endDT
  if(typeof startDT == 'string' && startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)){
    startDT = startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/);
    startDT = startDT.toString().split(':');
    var obstartDT = new Date();
    obstartDT.setHours(startDT[0]);
    obstartDT.setMinutes(startDT[1]);
    obstartDT.setSeconds(startDT[2]);
  }
  else if(typeof startDT == 'string' && startDT.match(/^now$/i)) var obstartDT = new Date();
  else if(typeof startDT == 'string' && startDT.match(/^tomorrow$/i)){
    var obstartDT = new Date();
    obstartDT.setHours(24);
    obstartDT.setMinutes(0);
    obstartDT.setSeconds(1);
  }
  else var obstartDT = new Date(startDT);

  if(typeof endDT == 'string' && endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)){
    endDT = endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/);
    endDT = endDT.toString().split(':');
    var obendDT = new Date();
    obendDT.setHours(endDT[0]);
    obendDT.setMinutes(endDT[1]);
    obendDT.setSeconds(endDT[2]);  
  }
  else if(typeof endDT == 'string' && endDT.match(/^now$/i)) var obendDT = new Date();
  else if(typeof endDT == 'string' && endDT.match(/^tomorrow$/i)){
    var obendDT = new Date();
    obendDT.setHours(24);
    obendDT.setMinutes(0);
    obendDT.setSeconds(1);
  }
  else var obendDT = new Date(endDT);

  // gets the difference in number of seconds
  // if the difference is negative, the hours are from different days, and adds 1 day (in sec.)
  var secondsDiff = (obendDT.getTime() - obstartDT.getTime()) > 0 ? (obendDT.getTime() - obstartDT.getTime()) / 1000 :  (86400000 + obendDT.getTime() - obstartDT.getTime()) / 1000;
  secondsDiff = Math.abs(Math.floor(secondsDiff));

  var oDiff = {};     // object that will store data returned by this function

  oDiff.days = Math.floor(secondsDiff/86400);
  oDiff.totalhours = Math.floor(secondsDiff/3600);      // total number of hours in difference
  oDiff.totalmin = Math.floor(secondsDiff/60);      // total number of minutes in difference
  oDiff.totalsec = secondsDiff;      // total number of seconds in difference

  secondsDiff -= oDiff.days*86400;
  oDiff.hours = Math.floor(secondsDiff/3600);     // number of hours after days

  secondsDiff -= oDiff.hours*3600;
  oDiff.minutes = Math.floor(secondsDiff/60);     // number of minutes after hours

  secondsDiff -= oDiff.minutes*60;
  oDiff.seconds = Math.floor(secondsDiff);     // number of seconds after minutes

  return oDiff;
}
- Examples diffDateTime() function Usage, with various date-time formats. The results will be added into a HTML element with id="testdtdiff".
<div id="testdtdiff"></div>
<script type="text/javascript"><!--
// Here add the diffDateTime() function

  /* 1.) Difference between 2 times (in hours:min:sec) */
var objDiff = diffDateTime('8:35:6', '8:55:34 AM');
var dtdiff = objDiff.days+ ' days, '+ objDiff.hours+ ' hours, '+ objDiff.minutes+ ' minutes, '+ objDiff.seconds+ ' seconds';
var total_hours = 'Total Hours: '+ objDiff.totalhours;
var total_min = 'Total minutes: '+ objDiff.totalmin;

// adds the result in #testdtdiff element
document.getElementById('testdtdiff').innerHTML += '1.) <b>"8:35:6", "8:55:34"</b><br/>Difference: '+ dtdiff+ '<br/>'+ total_hours+ '<br/>'+ total_min;

  /* 2.) Difference between a previous date-time and "now" (current datetime) */
var objDiff = diffDateTime('07/19/2012 14:10:00', 'now');
var dtdiff = objDiff.days+ ' days, '+ objDiff.hours+ ' hours, '+ objDiff.minutes+ ' minutes, '+ objDiff.seconds+ ' seconds';
var total_hours = 'Total Hours: '+ objDiff.totalhours;
var total_min = 'Total minutes: '+ objDiff.totalmin;

// adds the result in #testdtdiff element
document.getElementById('testdtdiff').innerHTML += '<br/><br/>2.) <b>"07/19/2012 14:10:00", "now"</b><br/>Difference: '+ dtdiff+ '<br/>'+ total_hours+ '<br/>'+ total_min;

  /* 3.) Difference between "now" (current datetime) and "tomorrow" (1st second in the next day) */
var objDiff = diffDateTime('NOW', 'TOMORROW');
var dtdiff = objDiff.days+ ' days, '+ objDiff.hours+ ' hours, '+ objDiff.minutes+ ' minutes, '+ objDiff.seconds+ ' seconds';
var total_hours = 'Total Hours: '+ objDiff.totalhours;
var total_min = 'Total minutes: '+ objDiff.totalmin;

// adds the result in #testdtdiff element
document.getElementById('testdtdiff').innerHTML += '<br/><br/>3.) <b>"NOW", "TOMORROW"</b><br/>Difference: '+ dtdiff+ '<br/>'+ total_hours+ '<br/>'+ total_min;

  /* 4.) Difference between 2 date nd time */
var objDiff = diffDateTime('August 25, 2012 14:10:00', '09/18/2012 08:25:00');
var dtdiff = objDiff.days+ ' days, '+ objDiff.hours+ ' hours, '+ objDiff.minutes+ ' minutes, '+ objDiff.seconds+ ' seconds';
var total_hours = 'Total Hours: '+ objDiff.totalhours;
var total_min = 'Total minutes: '+ objDiff.totalmin;

// adds the result in #testdtdiff element
document.getElementById('testdtdiff').innerHTML += '<br/><br/>4.) <b>"August 25, 2012 14:10:00", "09/18/2012 08:25:00"</b><br/>Difference: '+ dtdiff+ '<br/>'+ total_hours+ '<br/>'+ total_min;

  /* 5.) Difference between 2 date-time, with Timestamp (in milliseconds) */
var objDiff = diffDateTime(1348012438000, 1348029429000);
var dtdiff = objDiff.days+ ' days, '+ objDiff.hours+ ' hours, '+ objDiff.minutes+ ' minutes, '+ objDiff.seconds+ ' seconds';
var total_hours = 'Total Hours: '+ objDiff.totalhours;
var total_min = 'Total minutes: '+ objDiff.totalmin;

// adds the result in #testdtdiff element
document.getElementById('testdtdiff').innerHTML += '<br/><br/>5.) <b>1348012438000, 1348029429000</b><br/>Difference: '+ dtdiff+ '<br/>'+ total_hours+ '<br/>'+ total_min;
--></script>
To see the results of these examples, click

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which type of <input> creates a date input control, such as a pop-up calendar?
type="text" type="date" type="button"
<input type="date" name="set_date" value="2012-10-15" />
Which CSS property adds shadow effects to the text of an element?
font-style color text-shadow
h2 {
  text-shadow: 2px 3px 3px #a0a1fe;
}
Click on the function that adds new elements to the end of an array.
pop() shift() push()
var pags = ["lessons", "courses"];
pags.push("download", "tutorials");
alert(pags[2]);            // download
Which function sorts an array by key, in ascending order, maintaining key to data correlations?
asort() ksort() sort()
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net");
ksort($lang);
var_export($lang);     // array ("site"=>"coursesweb.net", 10=>"PHP", 20=>"JavaScript")
Difference between two Dates - Time and Date

Last accessed pages

  1. Insert, Select and Update NULL value in MySQL (56665)
  2. SHA256 Encrypt hash in JavaScript (24454)
  3. HTML Course - Free Lessons (24484)
  4. Detect when page visibility state is changed (245)
  5. Node.js Move and Copy Directory (15823)

Popular pages this month

  1. PHP Unzipper - Extract Zip, Rar Archives (162)
  2. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (99)
  3. SHA1 Encrypt data in JavaScript (78)
  4. Read Excel file data in PHP - PhpExcelReader (74)
  5. Create simple Website with PHP (70)