Математика даты JavaScript не работает

Я искал этот форум и нашел много полезных ответов, но один из ответов, которые я использовал, работает только при определенных условиях.

Я заполняю недельный календарь, и мне просто нужно определить начало недели (понедельник) из средства выбора даты, а затем я добавляю эту дату, чтобы заполнить текстовые поля следующими 6 днями. Это работает только в том случае, если выбор даты находится в том же месяце.

Итак, если я выберу среду, 15 мая 2013 года, он правильно вернет и заполнит понедельник 13 мая, вторник 14 мая и т. д.

Но если я выберу среду, 1 мая 2013 г., он правильно заполнит понедельник, 29 апреля, но вторник, он поместит 30 мая (добавляя месяц вместо дня).

Я должен отметить, что я создаю это в Application Craft, поэтому я не знаю, имеет ли это какое-либо влияние.

Вот мой код:

var curr = new Date(app.getValue("DatePicker2")); // get selected date
var first = curr.getDate() - curr.getDay() +1; // Adjust for monday start of week
var firstday = new Date(curr.setDate(first));
var secondday = new Date();
secondday.setDate(firstday.getDate()+1);

Может ли кто-нибудь увидеть, где я ошибся?

Спасибо

Тэмми


person tamtam44    schedule 19.05.2013    source источник


Ответы (1)


Здесь

secondday.setDate(firstday.getDate()+1)

поскольку вы указываете только дату в функции setDate, предполагается, что «этот» месяц, который в данном случае равен May

Итак, вы можете сделать

secondday = new Date(firstday.getFullYear(), firstday.getMonth(), firstday.getDate()+1)
person karthikr    schedule 19.05.2013
comment
Извините, я новичок и сам изучаю javascript. Я думал, что getDate для даты, getMonth для месяца. я не знаю точно, что вы имеете в виду? Или как это исправить? Спасибо! - person tamtam44; 19.05.2013
comment
Похоже, это тоже не работает, на самом деле это приводит к сбою обеих ситуаций (когда вы выбираете 15 мая, теперь понедельник ставится как правильное 13 мая, а вторник как (суббота) 4 мая. Когда вы выбираете 1 мая, это помещает правильное 29 апреля как понедельник, но (пятница) 3 мая как вторник. ? - person tamtam44; 19.05.2013
comment
Вы можете проверить редактирование. Я сбрасывал месяц на текущий месяц. - person karthikr; 19.05.2013
comment
Идеальный! Большое спасибо! :) - person tamtam44; 19.05.2013