【问题标题】:difference between current and database stored date and time当前和数据库存储的日期和时间之间的差异
【发布时间】:2015-10-05 11:44:37
【问题描述】:

我在数据库中有存储date,time and duration 的列。

<form action="exam_schedule.php" method="post">
    <input type="date" name="date" value="">
    <input type="time" name="time" value="">
    <input type="number" name="duration" value="">
    <input type="submit" name="submit" value="submit">
</form>

它将日期完美地存储在数据库中,但不提及 AM 和 PM 时间。 我想用存储在数据库中的值计算当前日期和时间之间的差异。

$query="SELECT * from exam_schedule";
$result=mysqli_query($connection,$query);
while($rows=mysqli_fetch_assoc($result))
{       
    $exam_date=$rows['date'];
    $exam_time=$rows['time'];    
    echo $exam_date-date("Y-m-d"); // but it returns 0    
}

我如何计算日期和时间之间的差异

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    echo $exam_date-date("Y-m-d"); // 但它返回 0

    你在这里做的是用另一个字符串减去一个字符串。

    echo '2015-12-09' - '2015-10-05';
    

    此打印0

    你可能想要做的是使用类似的东西

    $diff = strtotime($exam_date) - strtotime('now');
    

    这得到两个日期时间之间的间隔秒数。

    【讨论】:

    • 先生,我如何使用输入字段在数据库中存储日期和时间 允许我只存储日期, 允许我存储时间.我想在同一列中同时计算日期和时间,然后想计算它们之间的差异
    【解决方案2】:

    我建议使用 MySQL 中的日期和时间。你想要的可以使用DATEDIFF(date1, date2) & TIMEDIFF(time1, time2)来实现

    $query="SELECT e.*, DATEDIFF(CURRENT_DATE(), `date`) as date_dif, TIMEDIFF(CURRENT_TIME(), `time`) as time_dif FROM exam_schedule e";
    $result=mysqli_query($connection,$query);
    while($rows=mysqli_fetch_assoc($result))
    {       
        $exam_date=$rows['date'];
        $exam_time=$rows['time'];    
        echo $rows['date_dif']; // difference in days
        echo $rows['time_dif']; // difference in hh:mm:ss
    }
    

    【讨论】:

    • 先生,您的回答很有帮助。它给了我想要的结果。但是如果我将日期和时间存储在 mysql 列中,数据类型为“datetime”(将日期和时间存储在同一列中,那么我必须做些什么来计算当前和存储时间的差异。谢谢
    • 你可以使用同样的功能TIMEDIFF()
    【解决方案3】:

    试试这样的

    $currentdate = date("Y-m-d");
    $date_from_db = date_create($exam_date);
    $diff = date_diff($date1,$date2);
    

    【讨论】:

      【解决方案4】:

      可能不明白你要做什么,但你应该做这样的事情:

      echo date("Y-m-d", strototime($exam_date));
      

      您可以通过 PHP 的 Date 参考看到这一点。

      如果您希望使用时间,则取决于格式,如果您的 mysql 变量如下所示:

      $exam_date = '2015-10-10';
      $exam_time = '22:53:00';
      

      然后你可以使用插值来组合日期和时间:

      echo date("Y-m-d H:i:s", strtotime($exam_date." ".$exam_time));
      

      比较数据库时间和现在:

      $db_date = date("Y-m-d H:i:s", strtotime($exam_date." ".$exam_time));
      $date = date("Y-m-d H:i:s");
      
      $current = $date;
      $days = 0;
      while ($current <= $db_date) {
        $days++;
        $current = date("Y-m-d H:i:s", strtotime("+1 day", strtotime($current)));
      }
      

      【讨论】:

      • 我将考试时间表存储在数据库中,即 DATE 10/06/2016 TIME 10:00:AM 现在我想用存储在日期和时间数据库中的值来计算当前日期和时间之间的差异。
      • 您的 TIME 是否总是有 AM/PM 但没有秒数?
      • 我正在使用 标签它只允许 HH:MM:AM
      • 您可能想用 str 替换 AM/PM,然后使用 H:i 而不是 H:i:s
      • DateTime 可能支持 AM/PM,但我对此并不完全确定。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2019-01-24
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多