Existem várias coisas malucas que acontecem com um objeto JS DATE que convertem seqüências de caracteres, por exemplo, considere a data seguinte que você forneceu
Nota: Os exemplos a seguir podem ou não ter UM DIA DE DESCONTO, dependendo do SEU fuso horário e da hora atual.
new Date("2011-09-24"); // Year-Month-Day
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
No entanto, se reorganizarmos o formato da string para Mês-Dia-Ano ...
new Date("09-24-2011");
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Outro estranho
new Date("2011-09-24");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF AS BEFORE.
new Date("2011/09/24"); // change from "-" to "/".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Poderíamos alterar facilmente hífens na sua data "24/09/2011" ao fazer uma nova data
new Date("2011-09-24".replace(/-/g, '\/')); // => "2011/09/24".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
E se tivéssemos uma sequência de datas como "2011-09-24T00: 00: 00"
new Date("2011-09-24T00:00:00");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Agora mude o hífen para avançar a barra como antes; o que acontece?
new Date("2011/09/24T00:00:00");
// => Invalid Date
Normalmente, tenho que gerenciar o formato da data 2011-09-24T00: 00: 00, então é isso que faço.
new Date("2011-09-24T00:00:00".replace(/-/g, '\/').replace(/T.+/, ''));
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
ATUALIZAR
Se você fornecer argumentos separados para o construtor Date, poderá obter outras saídas úteis, conforme descrito abaixo
Nota: os argumentos podem ser do tipo Número ou String. Vou mostrar exemplos com valores mistos.
Obter o primeiro mês e dia de um determinado ano
new Date(2011, 0); // Normal behavior as months in this case are zero based.
=> // Sat Jan 01 2011 00:00:00 GMT-0700 (MST)
Obter o último mês e dia do ano
new Date((2011 + 1), 0, 0); // The second zero roles back one day into the previous month's last day.
=> // Sat Dec 31 2011 00:00:00 GMT-0700 (MST)
Exemplo de número, argumentos de sequência. Observe que o mês é março porque zero meses com base novamente.
new Date(2011, "02");
=> // Tue Mar 01 2011 00:00:00 GMT-0700 (MST)
Se fizermos a mesma coisa, mas com um dia zero, obteremos algo diferente.
new Date(2011, "02", 0); // again the zero roles back from March to the last day of February.
=> // Mon Feb 28 2011 00:00:00 GMT-0700 (MST)
Adicionar um dia zero a qualquer argumento de ano e mês obterá o último dia do mês anterior. Se você continuar com números negativos, poderá continuar revertendo outro dia
new Date(2011, "02", -1);
=> // Sun Feb 27 2011 00:00:00 GMT-0700 (MST)