【问题标题】:how get number data +1 iteration如何获取数字数据+1迭代
【发布时间】:2018-12-07 08:08:33
【问题描述】:

我有一个日期类型的输入,我正在获取输入值,我需要比较下一个输入值是否为 +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

【问题讨论】:

标签: javascript date iteration


【解决方案1】:

不确定这是否是最有效的方法,但它应该适合您。如果下一个输入值为 +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>

【讨论】:

    【解决方案2】:

    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
    }
    

    【讨论】:

    • 谢谢,但这不是我确切要求的,您比较的 startdate 小于 end date,但我需要比较较小的 date -1 day from end date or not。你用 if ( start-date
    • “我需要比较较小的日期 -1 天是否距离结束日期”。这部分没看懂,能多解释一下吗?
    • 例如。我选择开始日期,如果结束日期是 03.02.2018 或任何其他日期我需要发出警报,那么它是 01.02.2018,就像您需要选择 02.02.2018 作为结束日期
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多