This is very weird I don’t know what I’m doing wrong. I have a function to grab the date (i.e in this format: 06/24/2011), here’s the function:
function checkDate(input){
var d = new Date();
var dspl = input.split("/");
if(dspl.length != 3)
return NaN;
d.setDate(dspl[1]);
d.setMonth(Number(dspl[0])-1);
if(dspl[2].length == 2)
d.setYear("20"+(dspl[2]+""));
else if(dspl[2].length == 4)
d.setYear(dspl[2]);
else
return NaN;
var dt = jsToMsDate(new Date(d));
return dt;
}
If I enter any date of the month, it would parse the date correctly, but if I enter 31st, i.e "01/31/2011", then it would turn into "01/01/2011". I’m not sure what to do and not really sure where the problem might be.
JavaScript’s
Dateobjects allow you to give invalid combinations of months and days; they automagically correct those for you (so for instance, if you set the day of the month to 31 when the month is June, it automatically makes it July 1st). That means if you set the fields individually, you can run into situations where that automagic correction gets in your way.In your case, if you’re going to set all three of those fields, you’re better off using the form of the
Dateconstructor that accepts them as arguments:(If you want hours, minutes, seconds, and milliseconds, you can add them as parameters as well.)
So looking at your code, an off-the-cuff update:
Some other notes on that update:
parseIntto parse numbers from end users, and to always specify the radix (10 for decimal). (No,parseIntis not slower thanNumberor the unary+trick. People assume it is, but it isn’t.)new Date()again.