从到达日历向出发日历添加 2 天

Add 2 days from an arrival calendar to a departure calendar

我目前正在使用 HTML 5 日期类型,它可以为一个人下拉日历 select 和到达日期。我希望能够在出发日历中添加两天,这是我表单中的下一个字段。日期格式为 mm/dd/yyyy.

更清楚一点,如果有人 selects 在到达日历表单字段中说 07/03/2015,那么我希望下一个出发字段中已经包含 07/05/2015为他们。希望这是有道理的

感谢您对此提供的任何帮助。

当然是代码:<div class="col-md-4"> <label>Arrival Date *</label> <input type="date" value="" maxlength="10" class="form-control" name="arrival" id="arrival" required> </div> <div class="col-md-4"> <label>Departure Date *</label> <input type="date" value="" maxlength="10" class="form-control" name="depart" id="depart" required> </div>

您需要将日期输入字段的值解析为日期对象,然后向该日期对象添加两天。

var departure = document.getElementById('departure').value;
var arrivalTime = Date.parse(departure) + (1000 * 60 * 60 * 24 * 2);
var arrivalDate = new Date(arrivalTime);
// set the value on the input
document.getElementById('arrival').value = arrivalDate.toString('yyyy-MM-dd');

您需要将日期设置为该格式,否则 HTML5 将不起作用。此线程将引导您朝着正确的方向前进(例如有用的库)

How to format a JavaScript date

您可以获取当前日期,然后向其添加两天的毫秒数。您必须处理从所需格式到 RFC 3339 日期格式的转换 (YYYY-MM-DD)。

input type=date – date input control

"A valid full-date as defined in [RFC 3339], with the additional qualification that the year component is four or more digits representing a number greater than 0."

日期输入值的语法

可以查看here (RFC3339 5.6).

date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                         ; month/year

full-date       = date-fullyear "-" date-month "-" date-mday

代码

$(function() {
  function parseDate(dateString) {
    var parts = dateString.split('/');
    return new Date(parts[2], parts[0] - 1, parts[1]);
  }
  
  function getFormattedDate(date) {
    return date.toISOString().substring(0, 10);
  }
  
  function addTime(date, ms) {
    return new Date(date.getTime() + ms);
  }

  var MS_SEC = 1000;
  var MS_MIN = MS_SEC * 60;
  var MS_HOUR = MS_MIN * 60;
  var MS_DAY = MS_HOUR * 24;
  
  var date = parseDate('07/03/2015');

  $('#arrival').val(getFormattedDate(date));
  $('#departure').val(getFormattedDate(addTime(date, MS_DAY * 2)));
});
label {
  display: inline-block;
  width: 80px;
  font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label for="arrival">Arrival: </label>
<input type=date id="arrival" />
<br />
<label for="departure">Departure: </label>
<input type=date id="departure" />

var date1 = Date.parse('07/05/2015');
date1.setDate(date1.getDate()+2);

现在 date1 将给出 07/05/2015