This is nothing specific to dates. Every time you use the 'new' operator, you get a new object.
When you use == or === to compare two objects, it doesn't mean "tell me if these two objects represent the same underlying value". It means "tell me if these are two references to *the same object*". For example: function Foo() {} var f1 = new Foo; var f2 = new Foo; var f3 = f1; alert( f1 == f2 ); // false - two different objects alert( f1 == f3 ); // true - both are references to the same object -Mike > From: Fontzter > > Well, I guess this is intrinsic to javascript. I didn't know > that date compares were not reliable. Seems to work with > milliseconds though. Learn something new every day. > > var dt1 = new Date(2009,7-1,31); > var dt2 = new Date(2009,7-1,31); > alert(dt1 === dt2); //false > alert(dt1 == dt2); //false > alert(dt1.getTime() === dt2.getTime()); //true > > Dave > > > On Jul 31, 10:16 am, Fontzter <dmfo...@gmail.com> wrote: > > Can someone tell me what I may be doing wrong here? > > > > var dateList = new Array(); > > dateList.push(new Date(2009,7-1,29)); > > dateList.push(new Date(2009,7-1,30)); > > dateList.push(new Date(2009,7-1,31)); > > var testdate = new Date(2009,7-1,30); > > alert($.inArray(testdate,dateList)); //returns -1 ???? > > > > tia, > > > > Dave >