Я не знаю, почему это работает, но то, что я нашел, - это использование косой черты или тире влияет на ответ. Взглянуть.
new Date ('2012/03/21'); // returns: "Wed Mar 21 2012 00:00:00 GMT-0500 (CDT)"
new Date ('2012-03-21'); // returns: "Tue Mar 20 2012 19:00:00 GMT-0500 (CDT)" WHA!
Так, чтобы исправить мою проблему, я сделал простое регулярное выражение на моей дату ввода всегда заменить первую три черточки с слэшем.
var strInputValue = control.value, // <-- get my date string
dteCurrent;
strInputValue = strInputValue.replace(/-/, '/') // replace 1st "-" with "/"
.replace(/-/, '/'); // replace 2nd "-" with "/"
dteCurrent = new Date(strInputValue);
Я сделал очень быстро поиск Google, почему это не случилось бы и нет ответа. Но это должно исправить вашу проблему. Все, что вам нужно сделать, это заменить дефисы косыми чертами перед тем, как передать их туда, где вы хотите.
Редактировать: извините, я не заметил уже принятого ответа перед публикацией, пожалуйста, не обращайте на это ответ.
Вы уверены, что это относится к датепике? 'document.write (новая дата ('2012-03-21'))' prints 'Вт 20 мар 2012 20:00:00 GMT-0400 (Восточное дневное время)' для меня. Високосный год? –
Что-то делать с форматированием, проверьте это: http://jsfiddle.net/fkSC5/ Передача '2012-03-21' и' 2012/03/21' на 'Date()' дает результаты, которые равны 4 часов. –
Это правда. новая дата ('...') отключена на один день. – user823527