манипулирование объектом даты с помощью JavaScript - PullRequest
0 голосов
/ 25 января 2011

я возился с объектом даты.

Я хочу добавить динамическое количество дней в день, а затем получить полученную дату в виде переменной и опубликовать ее в форме.

var startDate = $('#StartDate').datepicker("getDate");
    var change = $('#numnights').val();
    alert(change);
    var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + change);

все делает правильно, кроме последней части. это не добавляет дни на день

take this scenario:
startdate = 2011-03-01   
change = 1  
alert change = 1
endDate = 2011-03-11 *it should be 2011-03-02*

спасибо за все быстрые ответы.

преобразование переменной изменения в целое число сделало свое дело. спасибо.

parseInt(change)

Вкратце: есть ли способ присвоить переменной тип, такой как var charge (int)?

Ответы [ 4 ]

2 голосов
/ 25 января 2011

Возможно, вы стали жертвой объединения строк.

Попробуйте изменить последний параметр в конструкторе Date на: startDate.getDate() + parseInt(change)

См. этот пример для дальнейшего использования.

1 голос
/ 25 января 2011

Похоже, вы не добавляете день окончания, вы объединяете его так '1' + '1' = '11'

используйте parseInt(), чтобы убедиться, что вы работаете с целыми числами

пример

var change = parseInt($('selector').val());

Кроме того, с помощью этого решения вы можете легко закончить день вне диапазона, если вы скажете, что в день начала 29-го числа месяца и получите изменение 5

1 голос
/ 25 января 2011

Я полагаю, что вы объединяете вместо использования математического оператора.Попробуйте вместо этого

var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + (+change));
1 голос
/ 25 января 2011

преобразовать change в число перед его добавлением. похоже, что вы получаете операцию конкатенации строк, а не дополнение, которое вы ожидаете в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...