Suresh Pattu
Suresh Pattu

Reputation: 6209

How do i find the difference between two dates using Javascript

I want to get reaming days to go particular date so i am trying to detection of particular date with today date. but this not working here is my code If the date is next month 27 how can i get remaining days to go

    var date2=new Date();
    var date1=27/5/2012;
    var diff = date1.getDate()-date2.getDate();
    var date_reaming = diff.getDate();
    document.write(date_reaming + 'days to go');

Upvotes: 8

Views: 42831

Answers (6)

Suresh Pattu
Suresh Pattu

Reputation: 6209

Here is the answer, i found this from here my js-fiddle is here

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();/* Returns the month (from 0-11) */
var curr_month_plus= curr_month+1; /* because if the month is  4 it will show output 3 so we have to add +1 with month*/ 
var curr_year = d.getFullYear();
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;    }
    var a =curr_month_plus+ '/' + curr_date + '/' + curr_year;
    var b;   
    b = "5/26/2012";
    document.write(+datediff(a,b)+" day(s)<br>");

Upvotes: 3

David Hedlund
David Hedlund

Reputation: 129782

Your code

date1=27/5/2012

Actually means 27 divided by 5 divided by 2012. It is equivalent to writing

date1 = 0.0026838966202783303

date1 will be a number, and this number has no getDate method.

If you declared them as actual date objects instead

var date2 = new Date(2012, 3, 19);
var date1 = new Date(2012, 4, 27);

You would be able to perform

var diff = date1 - date2;

This would give you the difference in milliseconds between the two dates.

From here, you could calculate the number of days like so:

var days = diff / 1000 / 60 / 60 / 24;

Upvotes: 16

Muhammad Alvin
Muhammad Alvin

Reputation: 1210

I think you can subtract it:

var date2 = new Date(2012, 3, 19); // 1st argument = year, 2nd = month - 1 (because getMonth() return 0-11 not 1-12), 3rd = date
var date1 = new Date(2012, 4, 27);
var distance = date1.getTime() - date2.getTime();
distance = Math.ceil(distance / 1000 / 60 / 60 / 24); // convert milliseconds to days. ceil to round up.
document.write(distance);

Upvotes: 3

Ropstah
Ropstah

Reputation: 17794

Please understand what jQuery is made for.

jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.

You want to use basic Javacript or as Juan G. Hurtado states another library like momentjs.

Upvotes: 2

thecodeparadox
thecodeparadox

Reputation: 87073

function getDateDiff(date1, date2, interval) {
    var second = 1000,
    minute = second * 60,
    hour = minute * 60,
    day = hour * 24,
    week = day * 7;
    date1 = new Date(date1).getTime();
    date2 = (date2 == 'now') ? new Date().getTime() : new Date(date2).getTime();
    var timediff = date2 - date1;
    if (isNaN(timediff)) return NaN;
    switch (interval) {
    case "years":
        return date2.getFullYear() - date1.getFullYear();
    case "months":
        return ((date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth()));
    case "weeks":
        return Math.floor(timediff / week);
    case "days":
        return Math.floor(timediff / day);
    case "hours":
        return Math.floor(timediff / hour);
    case "minutes":
        return Math.floor(timediff / minute);
    case "seconds":
        return Math.floor(timediff / second);
    default:
        return undefined;
    }
}

console.log(getDateDiff('19/04/2012', '27/5/2012', 'days'));

Upvotes: 8

Juan G. Hurtado
Juan G. Hurtado

Reputation: 2127

jQuery has not built-in date management functions. Try with: http://momentjs.com/

Upvotes: 4

Related Questions