Добавьте 30 дней к дате (мм / дд / гггг), затем верните строку (мм / дд / гггг)

#javascript #jquery #date #datepicker

#javascript #jquery #Дата #указатель даты

Вопрос:

У меня есть функция ниже, которая берет строку из datepicker и превращает ее в объект date, чтобы я мог добавить к ней 30 дней. Оттуда я пытаюсь вернуть новую дату в виде строки с добавлением к ней 30 дней в формате (мм / дд / гг).

Когда срабатывает первое предупреждение, оно корректно добавляет 30 дней к выбранной дате и показывает это для выбранной даты как «03.05.2011»:

Чт, 02 июня 2011 00:00:00 GMT 0100 (летнее время GMT)

Второе предупреждение показывает

5/2/2011

Кажется, я не могу правильно отформатировать дату и взять «05/03/2011» и вернуть «06/02/2011». Я мог бы просто указать месяц 1, но мне не помешала бы некоторая помощь, пожалуйста, и покажите мне, что я делаю неправильно.

   $('#sign_date').datepicker({
      onSelect: function(dateText, inst) { 

          var d = new Date(dateText);
          d.setDate(d.getDate()   30);

          alert(d);

          var date = d.getDate();
          var month = d.getMonth();
          var year = d.getFullYear();

          alert(month '/' date  '/' year)

      }
  });
  

Также я думаю, что то, как я это делаю, будет показывать дни и месяц, например, Jan = 1 и 1st = 1, и я бы хотел, чтобы это было Jan = 01 и 1st = 01

Спасибо

Ответ №1:

Для начальных нулей:

 // add leading zero if the length equals 1
if (month < 10) month = "0"   month;
if (day < 10)   day   = "0"   day;
  

Не забудьте также добавить 1 к вашему месяцу до использования этого кода, поскольку getMonth() возвращает 0 для января и так далее:

  var month = d.getMonth()   1;
  

Комментарии:

1. Я могу добавить 30 дней, но, похоже, не могу вернуть дату в правильном формате

2. @jim, извините, я заканчивал свой ответ, когда отправлял то, что, как я думал, было первой половиной вашей проблемы.

Ответ №2:

Сюрприз, сюрприз… getMonth() Метод возвращает месяц в диапазоне 0..11.

Ответ №3:

Ответ от Келли меня устраивает

Просто изменил это

 if(month<9) month = "0" (month 1);
if(date<10) day = "0" date;
  

Комментарии:

1. С вашим текущим кодом, если исходный код month == 9, вы получите 010 .

2. Мммм, вы правы. Это должно быть (месяц<9), потому что мне нужны месяцы от 1-12, а не от 0-11