【问题标题】:Insert days between 2 date into database将 2 个日期之间的天数插入数据库
【发布时间】:2018-08-13 15:42:01
【问题描述】:

我在 html 中有 2 个日期输入

<tr>
    <td>Value Date</td>
    <td><input type='date' name='valueDate' class='form-control'></td>                  
</tr>
<tr>
    <td>Maturity Date</td>
    <td><input type='date' name='maturityDate' class='form-control'></td>                   
</tr>

这是动作代码

$valueDate = $_POST['valueDate'];
$maturityDate = $_POST['maturityDate'];

现在,我有一个变量 $days 用于 2 个日期之间的天数,最初是这样的:

$days = date_diff($valueDate,$maturityDate);

这是我的查询:

$query = mysqli_query($conn, "INSERT INTO placement(
                        valueDate, 
                        maturityDate,
                        days
                        ) VALUES(
            '$valueDate',
            '$maturityDate',
            '$days'
            )");

我使用 PHP 7.2.0 来使用date_diff

之前,我尝试使用$days-&gt;format("%a");

但我得到错误。有什么想法吗?

【问题讨论】:

  • 错误是什么??
  • 此代码不安全,请阅读prepared statements
  • @Dave 这是错误警告:date_diff() 期望参数 1 为 DateTimeInterface,第 15 行 C:\xampp\htdocs\notapembukuan\action1.php 中给出的字符串致命错误:未捕获错误:调用 C:\xampp\htdocs\notapembukuan\action1.php:16 中布尔值的成员函数 format() 堆栈跟踪:#0 {main} 在第 16 行的 C:\xampp\htdocs\notapembukuan\action1.php 中抛出

标签: php sql date


【解决方案1】:

这应该可以工作

$date1 = new DateTime($_POST['valueDate']);
$date2 = new DateTime($_POST['maturityDate']);
$interval = $date1->diff($date2);

【讨论】:

  • $date1 是一个字符串 - 你为什么期望它有任何方法?
  • 好点,我现在修改一下,完全忘记添加了!
  • @Alex 我看你也打败了我吧!可以在这里使用DateTime::createFromFormat 之类的东西吗?还是我太努力让它复杂化了
  • 继续努力并在发布之前检查您的代码。我建议您使用不同的在线工具来调试和检查您的代码。 ideone.com 就是其中之一 - 只要尝试调试您的任何想法。
【解决方案2】:

试试这个代码:

<?php
 $datetime1 = new DateTime('2009-10-11');
 $datetime2 = new DateTime('2009-10-13');
 $interval = $datetime1->diff($datetime2);
 echo $interval->format('%R%a days');
?>

【讨论】:

    【解决方案3】:

    http://php.net/manual/en/class.dateinterval.php

    //$d1=new DateTime("2018-07-08"); 
    $d1=new DateTime($_POST['valueDate']);
    //$d2=new DateTime("2018-10-08"); 
    $d2=new DateTime($_POST['maturityDate']);
    $interval = $d2->diff($d1)->days; 
    

    https://ideone.com/hpkfxq

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多