0

I need your help.

How can I compare 2 dates and finding out what the date difference is, using the date format of dd/mm/yyyy? (uk date standard)

Ie.1

var date1 = "26/11/2013"
var date2 = "29/11/2013"

if (date1 < date2) { difference is -3 }

Ie.2

var date1 = "26/11/2013"
var date2 = "22/11/2013"

if (date1 > date2) { difference is +4 }

Ie.3

var date1 = "26/11/2013"
var date2 = "26/11/2013"

if (date1 > date2) { difference is 0 }
Jason Kelly
  • 2,539
  • 10
  • 43
  • 80

3 Answers3

1

Use the Date object:

var date1 = '26/11/2013'.split('/');
var date2 = '29/11/2013'.split('/');
var start = new Date(date1[2], +date1[1]-1, date1[0]);
var end = new Date(date2[2], +date2[1]-1, date2[0]);

alert((start.getTime() - end.getTime()) / (1000*60*60*24));

You probably want to add some error checking but you get the idea

Pajn
  • 317
  • 3
  • 10
0
  1. split Date into y m d
  2. create new Dates

then use code like this. (Java)

public String get_duration_from_date(Date date1, Date date2) {

    TimeUnit timeUnit = TimeUnit.SECONDS;

    long diffInMillies = date2.getTime() - date1.getTime();
    long s = timeUnit.convert(diffInMillies,TimeUnit.MILLISECONDS);


    long days = s / (24*60*60);
    long rest = s - (days*24*60*60);
    long std =  rest / (60*60);
    long rest1 = rest - (std*60*60);
    long min = rest1 / 60;      
    long sec = s % 60;


    String dates ="";
    if (days > 0)
      dates +=  int_to_str((int)days) + " " + grs(R.string.days) + " ";

    dates +=  fill2((int)std) + "h ";
    dates +=  fill2((int)min) + "m ";
    dates +=  fill2((int)sec) + "s ";

    return dates;
}
Ingo
  • 5,239
  • 1
  • 30
  • 24
0

If you really want to stick to the format, you could set a new date like this

var date1 = "21/11/2013"
 , date1Obj = new Date(date1.split('/').reverse());

Then either make use of moment.js as Andreas mentioned or compare the dates yourself

var date1 = "21/11/2013"
 , date2 = "29/11/2013"
 , d1 = new Date(date1.split('/').reverse())
 , d2 = new Date(date2.split('/').reverse());
if (d1 < d2){ console.log((d1.getTime()-d2.getTime())/86400000 + ' days') }
brunettdan
  • 997
  • 9
  • 7