У вас есть интересная ситуация здесь на самом деле, это вызвано тем, что при создании объекта Date, если вы не указали смещение часового пояса, он предполагает, что ваш ввод даты находится в UTC, а затем преобразует его. Это связано только с тем, что вы указали свое значение с помощью «-» вместо «/»
EDIT: Исправление. Я полагаю, что ваша дата может быть принята за UTC, а затем преобразована в соответствующее время EDT. Это объясняет, почему установка точно значений или использование '/' возвращает другой результат. «/», вероятно, обозначает время EDT, а «-» обозначает время UTC.
См:
var asString = "2013-08-08T00:00:00" var mydate =
asString.substring(0,10);
var cDate1 = new Date(mydate);
var cDate2 = new Date(mydate.replace('-', '/'));
var asSplit = mydate.split('-');
var cDate3 = new Date(asSplit);
alert(cDate1 + "\n" + cDate2 + "\n" + cDate3);
Который производит следующее:
Wed Aug 07 2013 20:00:00 GMT-0400 (Eastern Daylight Time)
Thu Aug 08 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
Thu Aug 08 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
Где случаи:
- Стандартный
- Заменить '-' с '/'
- Отделить в год/месяц/день
Вы можете увидеть его в действии here
EDIT: Отмеченный ошибка указал loxxy
Знаете ли вы, что такое часовые пояса? И вы не потеряли месяц. Это был август, и он оставался в августе. – ZenMaster
Моя локальная машина включена (UTC-05: 00) Восточное время (США и Канада) – Coltech
Который, вероятно, переводится в GMT-0400, а переход на летнее время не применяется. – ZenMaster