Как убедиться, что дата окончания всегда на 7 дней больше даты начала?

#javascript #html #date

#javascript #HTML #Дата

Вопрос:

У меня есть страница, на которой указаны дата начала и дата окончания, как показано ниже:

введите описание изображения здесь

Как вы можете видеть, дата окончания всегда на 7 дней больше даты начала по умолчанию. Мне разрешено изменять дату начала, но как мне убедиться, что каждый раз, когда я меняю дату начала, дата окончания также добавляет 7 дней к соответствующей дате начала?

Код:

   <%

        String relPath = "../../../";
        String currentDate = CoreUtil.parseDate(new Date());

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //get current date
        Calendar cal = Calendar.getInstance();
        //Number of Days to add
        cal.add(Calendar.DAY_OF_MONTH, 7);
        String defaultDate = sdf.format(cal.getTime());





    %>

Start Date:amp;emsp;<input class="txtStartDate" style="font: 13px/1.231 Trebuchet MS;" type="text" id="txtStartDate" name="Start Date" value="<%=currentDate%>" readonly><br><br>


End Date: amp;emsp; <input class="txtEndDate" style="font: 13px/1.231 Trebuchet MS;" type="text" id="txtEndDate" name="txtEndDate" value="<%=defaultDate%>"  readonly required/>
  

Редактировать:

Это мой код JavaScript:

 <Script>
    $('#txtStartDate').datepicker();
    $('#txtEndDate').datepicker();

    $('#txtStartDate').change(function(){
        var interval = 7;

        function convertDateString(p) { return (p < 10) ? '0'   p : p; }

        var startDate = new Date($(this).val());
        startDate.setDate(startDate.getDate()   interval);
        $('#txtEndDate').val( startDate.getFullYear()   '/'       convertDateString(startDate.getMonth()   1)   '/'   convertDateString(startDate.getDate()));
    });

</script>
  

В принципе, всякий раз, когда я меняю дату начала, дата окончания также должна автоматически меняться на (дата начала 7 дней), это все, что я пытаюсь сделать. Приведенный выше код должен был работать, но он не изменил дату окончания, когда я изменил дату начала.

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

1. О чем вы спрашиваете? Как определить, что дата начала изменилась? Как получить из него значение даты, добавить 7 дней и получить строку для даты окончания в JavaScript ? (Не Java, поскольку это должно происходить в веб-браузере, поэтому вопрос действительно помечен неправильным вопросом).

2. Прошу прощения, что я сформулировал это с неправильным тегом. Я отредактировал свой пост, чтобы он был понятнее.

3. хорошая библиотека — MomentJS, она действительно может помочь вам в этом.

4. Мой друг, не могли бы вы, пожалуйста, отметить мой ответ как принятый, если это помогло вам, хорошо?

Ответ №1:

Это может помочь.

 Date.prototype.addDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate()   days);
    return date;
}

$('#txtStartDate').datepicker();
$('#txtEndDate').datepicker();

$('#txtStartDate').change(function(){
    var interval = 7;
    var startDate = new Date($(this).val());
    $('#txtEndDate').val(startDate.addDays(interval));
});
  

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

1. Сорвиголова, если это помогло тебе, не мог бы ты отметить это как принятый ответ? Для меня это очень важно…

Ответ №2:

Вы можете выполнить вычисление с использованием объекта даты JavaScript и форматирования с использованием строк:

 // Get references to HTML elements
const startInput = document.getElementById("txtStartDate");
const endInput = document.getElementById("txtEndDate");

// Listen for changes to #txtStartDate
startInput.addEventListener("change", updateEndDate);

// Respond to changes
function updateEndDate(event){

  // Calculate end date
  let endDate = new Date(startInput.value);
  endDate.setUTCDate(endDate.getUTCDate()   7);

  // Separate the parts of end date
  let yyyy = endDate.getUTCFullYear(),
      mm = endDate.getUTCMonth()   1,
      dd = endDate.getUTCDate();

  // Add initial zeros if needed
  if(mm < 10){mm = "0"   mm; }
  if(dd < 10){dd = "0"   dd; }

  // Format and display end date
  endInput.value = `${yyyy}-${mm}-${dd}`;

}  
 <input type="date" id="txtStartDate" />
<input type="date" id="txtEndDate" />