代码之家  ›  专栏  ›  技术社区  ›  zundi

Internet Explorer 11以不正确的格式将日期发送到Laravel后端

  •  1
  • zundi  · 技术社区  · 5 年前

    我有一个包含以下输入的表单:

    <div class="form-group col-md-6 ">
        <label for="startdate">Start date</label>
        <input class="form-control" name="startdate" type="date" id="startdate">
    </div>
    

    我知道后端获取日期值的预期格式是yyyy-mm-dd( HTML5 date input specification RFC3339 specification ,它指定的完整日期格式等于:yyyy-mm-dd)。

    然而,Internet Explorer 11似乎以不同的格式发送值,因为我在我的Laravel日志(使用Laravel 5.8)中收到一个错误和以下消息:

    [2019-12-03 20:41:16] production.ERROR: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '06/12/2019' for column 'startdate' at row 1 (SQL: insert into `absenses` (`motive`, `startdate`
    at /var/www/zitthy/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 22007): SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '06/12/2019' for column 'startdate'
    at row 1 at /var/www/zitthy/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:123, PDOException(code: 22007): SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '06/12/2019' for column 'startdate'
    at row 1 at /var/www/zitthy/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:121)
    

    这在Chrome和Firefox中正常工作。

    关于如何在IE11中解决这个问题,有什么建议吗?

    谢谢

    0 回复  |  直到 4 年前
        1
  •  1
  •   Yu Zhou    5 年前

    <input type="date"> not supported 通过IE 11。这是一个简单的问题 <input> 在IE中,值的格式取决于您在 input .那么你如何处理IE中的价值呢?

    如果不想手动处理该值,可以使用 polyfill 使 <输入类型=“日期”> 与IE兼容。你可以在下面查看我的示例,IE中输入的日期值与使用polyfill后在Chrome中输入的日期值的格式相同:

    webshims.setOptions('forms-ext', {
      types: 'date'
    });
    webshims.polyfill('forms forms-ext');
    
    function test() {
      var dateval = document.getElementById("startdate").value;
      console.log(dateval);
    }
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="http://cdn.jsdelivr.net/webshim/1.14.5/polyfiller.js"></script>
    <div class="form-group col-md-6 ">
      <label for="startdate">Start date</label>
      <input class="form-control" name="startdate" type="date" id="startdate">
      <input type="button" value="test" onclick="test()" />
    </div>
    推荐文章