Finding Difference Between Two Dates Times In Javascript
Solution 1:
Once you have parsed the 2 strings and created the corresponding Date
object, you only have to use :
functionisValid(startDate, endDate) {
return endDate - startDate > 24 * 60 * 60 * 1000;
}
Solution 2:
Have a look at moment.js. It almost certainly does what you want.
Solution 3:
You can use this to calculate the difference and perform your validation:
Date.daysBetween = function( date1, date2 ) {
//Get 1 day in millisecondsvar one_day=1000*60*60*24;
// Convert both dates to millisecondsvar date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in millisecondsvar difference_ms = date2_ms - date1_ms;
//take out milliseconds
difference_ms = difference_ms/1000;
var seconds = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var minutes = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var hours = Math.floor(difference_ms % 24);
var days = Math.floor(difference_ms/24);
return days + ' days, ' + hours + ' hours, ' + minutes + ' minutes, and ' + seconds + ' seconds';
}
Solution 4:
The hard part is converting the strings into valid Date
objects, particularly since you are using a non-standard date format.
I would advise using a third party library which can cope with that format, or use simple string manipulation and use the version of the Data
constructor that takes six individual fields for each of (year, month, date, hour, minute, seconds).
Having done that, testing whether two JavaScript Date
objects are more than 24 hours apart is the easy bit - just take their numeric value and check whether it's more than 86400000 (the number of milliseconds in a day).
var t1 = newDate(Y1, M1, D1, hh1, mm1, ss1);
var t2 = newDate(Y2, M2, D2, hh2, mm2, ss2);
var valid = (t2 - t1) >= 86400000;
Solution 5:
/** Method: getDateObject
*
* Description:
* gives date object from string
* @paramdateString
* @param separator used
* @returns corresponding date object
*/functiongetDateObject(dateString, parseFormat) {
//This function return a date object after acceptingif(dateString!=null && dateString!=undefined && dateString!="")
{
var dateFormat = sessvars.currentUser.options.dateFormat;
if(parseFormat.length==0)
parseFormat = [dateFormat + " HH:mm:ss", dateFormat + " HH:mm",dateFormat];
var dtObject = Date.parseExact(dateString, parseFormat);
return dtObject;
}
elsereturn dateString;
}
Ok Thanx a lot guys for your valuable advice and suggestions. I have got a solution using a mix of your ideas.
Answer :
1.Made a custom function which return date object according to the format specified.
2.Now getTime() which gives milliseconds value.
3.SDate.getTime() - EDate.getTime() < 24*3600*1000
Example :
getDateObject("01-10-2012 05:30",[]).getTime() - getDateObject("02-10-2012 05:30",[]).getTime() < 24*3600*1000
Post a Comment for "Finding Difference Between Two Dates Times In Javascript"