Calculate duration between two date times in javascript
17,741
Solution 1
Try this :
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = dd+'/'+mm+'/'+yyyy; //Current Date
var valuestart ="8:00 AM";
var valuestop = "4:00 PM";//$("select[name='timestop']").val();
//create date format
var timeStart = new Date(today + " " + valuestart).getHours();
var timeEnd = new Date(today + " " + valuestop).getHours();
var hourDiff = timeEnd - timeStart;
alert("duration:"+hourDiff);
Solution 2
You should work on the epoch milliseconds. The idea is to transform everything to the epoch millis representation, perform your calculations, then go back to another format if needed.
There are many articles on the subject:
- Get the time difference between two datetimes
- http://www.htmlgoodies.com/html5/javascript/calculating-the-difference-between-two-dates-in-javascript.html#fbid=AojoSIQKaAL
Solution 3
today is of Date type whereas "01/01/2007" is a string. Trying to concatenate a Date object with "8:00 AM" will not work. You will have to turn today variable into a string or use today.setHours(8)
Author by
user2247744
Updated on June 30, 2022Comments
-
user2247744 almost 2 years
I need to calculate the duration between two datetimes in JavaScript. I have tried this code:
var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = mm+'/'+dd+'/'+yyyy; //Current Date console.log("current date"+today); var valuestart ="8:00 AM"; var valuestop = "4:00 PM";//$("select[name='timestop']").val(); //create date format var timeStart = new Date("01/01/2007 " + valuestart).getHours(); var timeEnd = new Date("01/01/2007 " + valuestop).getHours(); var hourDiff = timeEnd - timeStart; console.log("duration"+hourDiff);
From this, I am able to get Current Date and duration. But when I replace the date "01/01/2007" with the variable "today", I am getting the result as NaN. Please guide me in where I am wrong. Thanks in advance.