Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculating the difference between two dates

I have tried like this

<script type="text/javascript">
     var date2=02/09/2009;
     var date1=03/12/2009;
     var diff = date1.getDate()-date2.getDate();
     alert (diff);

</script>

but it's not working, is that reason getDate will work only for Date?

How to find the difference between these two dates? Am I not able use this function, because I am adding javascript in salesforce CRM apex pages?

Edit 1 : infact this too not working

<script type="text/javascript">
     var date2= new Date ("02/09/2009");
     var date1= new Date ("04/09/2009");
     var diff = date1.getDate()-date2.getDate();
     alert (diff);

</script>

Edit 2 : its not working too ...

<script type="text/javascript">
     var date2= "02/09/2009";
     var date1= "04/09/2009";
     var diff2 =    new Date(Date.parse("03/12/2009")-
                        Date.parse("02/09/2009")).toLocaleDateString();

// var new_date = new Date (1970, 01, 01); // var diff3 = diff2.getDate(); alert (diff2);

</script>
like image 969
joe Avatar asked Sep 11 '09 11:09

joe


2 Answers


<script language="JavaScript">
<!--
function dstrToUTC(ds) {
 var dsarr = ds.split("/");
 var mm = parseInt(dsarr[0],10);
 var dd = parseInt(dsarr[1],10);
 var yy = parseInt(dsarr[2],10);
 return Date.UTC(yy,mm-1,dd,0,0,0);
}

function datediff(ds1,ds2) {
 var d1 = dstrToUTC(ds1);
 var d2 = dstrToUTC(ds2);
 var oneday = 86400000;
 return (d2-d1) / oneday;
}

// test cases are below

var a; var b;

a = "01/09/1999";
b = "01/10/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "01/12/1999";
b = "01/19/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "01/19/1999";
b = "01/12/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "01/03/1999";
b = "01/13/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "04/30/1999";
b = "05/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "05/30/1999";
b = "06/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "02/28/1999";
b = "03/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "02/28/2000";
b = "03/01/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "01/01/1999";
b = "12/31/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "01/01/2000";
b = "12/31/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

a = "12/15/1999";
b = "01/15/2001";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");

// -->
</script>
like image 106
Robert L Avatar answered Oct 01 '22 07:10

Robert L


date2 = 02/09/2009 is not considered to be a date. it works this way. First it devides 02/09, it returns 0.2222222222222222 and its been divided by 2009 (0.2222222222222222/2009). finally you got an result date2 = 0.0001106133510314695. same way it calculates the result for date1.

this is not a valid operation. If you wanted to define the date. make sure that, you placed the data in a right date format.

use either new Date() or Date.parse("02/09/2009")

Edit:

   new Date(Date.parse("03/12/2009")-Date.parse("02/09/2009")).toLocaleDateString() Or
   new Date(date1- date2).toLocaleDateString()

isnt that work..??

Edit :

may be this will work.. can u try this..

 Date.parse("03/12/2009")-Date.parse("02/09/2009") / (24*60*60*1000) 

and it returns 31 days

it seems working for me.. but in my time zone it took 03/12/2009 as 3rd month 11th day and year 2009

(24*60*60*1000) = Number of milliseconds per day

like image 39
RameshVel Avatar answered Oct 01 '22 07:10

RameshVel