【问题标题】:Add a day to an input of type datetime-local在 datetime-local 类型的输入中添加一天
【发布时间】:2021-12-28 22:19:41
【问题描述】:

最好的问候我有一个问题,因为我试图做的是在 datetime-local 类型的输入上多加一天,我尝试使用 JQuery 但它只适用于我的输入是我想知道如何使用 datetime-local 对我有用的日期类型 这是我作为参考的代码,适用于日期:

$('#checkInDate')[0].valueAsDate = new Date();

    $('#checkInDate').change(function() {
    var date = this.valueAsDate;
    date.setDate(date.getDate() + 1);
    $('#checkOutDate')[0].valueAsDate = date;
    });

    $('#checkInDate').change();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
Date Ini:  <input type="date" id="checkInDate">
Date Out: <input type="date" id="checkOutDate"> <br>

【问题讨论】:

    标签: javascript html jquery date input


    【解决方案1】:

    datetime-local 输入没有 valueAsDate 属性。但你可以改用valueAsNumber

    因此,无论何时设置值,都使用input.valueAsNumber = +date 将日期对象转换为一个数字,每当您检索该值时,将其转换为使用new Date(input.valueAsNumber) 的日期

    此外,为了设置日期的初始值,将精度限制为分钟,您可以使用Math.floor(Date.now() / 6e4) * 6e4,并考虑时区,您可以减去时区偏移量。

    $('#checkInDate')[0].valueAsNumber = 6e4 * (Math.floor(Date.now() / 6e4) - new Date().getTimezoneOffset());
    
    $('#checkInDate').change(function() {
      var date = new Date(this.valueAsNumber);
      date.setDate(date.getDate() + 1);
      $('#checkOutDate')[0].valueAsNumber = +date;
      
      console.log(new Date(this.value)) // retrieving as data
    });
    
    $('#checkInDate').change();
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    Date Ini:  <input type="datetime-local" id="checkInDate">
    Date Out: <input type="datetime-local" id="checkOutDate"> <br>

    当然,在检索要在后端使用或存储在数据库中的数据时,请确保从this.value 而不是this.valueAsNumber 构造日期对象。

    【讨论】:

    • 我该怎么做才能让它只显示小时和分钟
    • 查看更新的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2018-08-06
    • 1970-01-01
    • 2017-04-12
    • 2018-01-14
    • 2020-02-08
    相关资源
    最近更新 更多