如何在JavaScript中将日期增加一个月?接收未捕获的TypeError

时间:2018-09-20 13:56:11

标签: javascript jquery twitter-bootstrap date bootstrap-datepicker

我有一个Bootstrap datepicker,其中选择了日期。单击按钮New Date后,在date中选择的datepicker应该增加一个月。

我有以下代码:

function getNewDate(){
    var date = new Date();
    date = $("#selectedDate").val();
    // alert(date);
    var newDate = new Date();
    newDate = date.setMonth(date.getMonth()+1);
    // alert(newDate);
}

但是,执行此操作时,出现以下错误:

  

未捕获的TypeError:date.getMonth不是函数

我要去哪里错了?

1 个答案:

答案 0 :(得分:4)

jQuery .val()返回一个字符串,然后必须对其进行解析。下面的代码假定它实际上是可以解析的格式。最好使用yyyy-mm-dd

此外,重要的是要知道date.setMonth(...)会更改基础的date对象。

还要注意,“不可能的日期”会延续到下个月,例如在来源日期date.setMonth(11)进行2018-10-31会导致“不可能的日期” 2018-11-31,然后变成2018-12-01

演示:

function getNewDate() {
  var str = $("#selectedDate").val(); // get string
  console.log(str);

  var date = new Date(str); // parse string
  console.log(date);

  date.setMonth(date.getMonth() + 1); // change date
  console.log(date);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="selectedDate" value="2018-12-20" />
<button onclick="getNewDate()">Add month</button>