如何获取数字数据+1迭代

时间:2018-12-07 08:08:34

标签: javascript date iteration

我有一个日期类型的输入,我正在获取输入值,我需要比较下一个输入值是否为+1天。我不知道该怎么做。

我尝试过:

是我的html:

<input type="date" class="form-control" data-model="startDate">
<input type="date" class="form-control" data-model="endDate">

在我的js中,我设置为变量输入:

var start_dates = $("#periodTable :input[data-model='startDate']");
var end_dates = $("#periodTable :input[data-model='endDate']");

然后我得到了它们的值:

var end_date = $(end_dates).val();
var start_date = $(start_dates).val();

我在控制台上获得start_date的值:

2018-12-10

我需要比较下一个输入值是否是2018-12-11。

在这里,我尝试使用

来获取此输出的日部分
var start_date_day = start_date.substring(8, 10);

一切正常,我得到: 10

if (start_date_day != start_date_day + 1) {

}

但是这种情况无法正常工作,因为我收到 start_date_day + 1 = 11

2 个答案:

答案 0 :(得分:0)

不确定这是否是最有效的方法,但它应该对您有用。如果下一个输入值为+1,则compute()函数将返回true。您可以重用逻辑。我已经为两个输入字段添加了id属性。我也不使用jQuery,而是使用本机JS,可以根据需要将其转换为jQuery语法。

我已经为此创建了一个JSFiddlehttps://jsfiddle.net/mazpxcut/

<html>
  <body>
    <input
      id="start_date"
      type="date"
      class="form-control"
      data-model="startDate"
    />
    <input
      id="end_date"
      type="date"
      class="form-control"
      data-model="endDate"
    />
    <button onclick="showVal()">Show</button>
  </body>
  <script>
    function showVal() {
      console.log(compute());
    }

    function compute() {
      var start_date_arr = document
        .getElementById("start_date")
        .value.split("-");
      var end_date_arr = document.getElementById("end_date").value.split("-");
      var start_date = start_date_arr.pop();
      var end_date = end_date_arr.pop();
      if (JSON.stringify(start_date_arr) !== JSON.stringify(end_date_arr))
        return false;
      else return end_date - start_date == 1;
    }
  </script>
</html>

答案 1 :(得分:0)

JavaScript中的日期工作方式不同,您可以参考此link以获得更多详细信息 您可以执行以下操作:

var end_date = $(end_dates).val();
var start_date = $(start_dates).val();
var ed = new Date(end_date);//this will convert end_date in milliseconds         and store it in ed variable
var sd = new Date(start_date);
sd.setDate(sd.getDate() + 1);//sd now contains a date that is one day ahead of start_date
//now you can check if ed not equal to sd
if(ed != sd){
 //do what u want
}