PHP在几分钟内获得时差

时间:2013-04-28 17:59:47

标签: php date date-math

我环顾四周,看不到我的数据库布局。基本上我需要花费当前时间和预定的事件时间,并查看当前时间是否是事件发生时间之前的10分钟。这是我的测试文件,它将当前时间转换为变量,然后从数据库表中提取eventTime,将事件时间设置为变量,从事件时间中减去当前时间,并打印差异。问题是我需要分钟,它只打印小时。

例如11:00 - 9:15给我1,我需要它说105(分钟数),我真的看了一遍,找不到任何不涉及更改db的内容结构

数据库以13:01的小时和分钟存储24小时的事件时间,并且当前时间在php中使用相同的格式设置日期(“H:i”)

这是一些测试代码,包括dbconnect.php就是我如何连接到我的数据库。

感谢您提供的任何帮助!

 <?php
include 'dbconnect.php';

$the_time = date('H:i');
echo $the_time." </br></br>";

$sql="SELECT eventTime FROM events";
$result=$conn->query($sql);

while ($row = $result->fetch_assoc()) {
$new_time=$row['eventTime'];

echo $new_time."New Time</br>";
echo $the_time-$new_time."The Difference</br></br>";
}
?>

感谢Gamster Katalin和John Conde,它已经解决了。这是工作代码:

<?php
include 'dbconnect.php';

date_default_timezone_set('America/New_York');
$the_time = date('H:i');
echo $the_time." </br></br>";

$sql="SELECT eventTime FROM events";
$result=$conn->query($sql);

while ($row = $result->fetch_assoc()) {
$new_time=$row['eventTime'];

echo $new_time."New Time</br>";
$datetime1 = new DateTime($the_time);
$datetime2 = new DateTime($new_time);
$interval = $datetime1->diff($datetime2);
$hours=$interval->format('%h');
$minutes= $interval->format('%i');
echo $hours." The Difference in Hours</br>".$minutes." The Difference in Minutes</br></br>";
}
?>

2 个答案:

答案 0 :(得分:4)

$datetime1 = new DateTime();
$datetime2 = new DateTime($row['eventTime']);
$interval = $datetime1->diff($datetime2);
$elapsed = $interval->format('%i minutes');
echo $elapsed;

答案 1 :(得分:1)

不要忘记MySQL对于这些事情非常强大:

SELECT CURTIME() AS currentTime, 
       eventTime, 
       TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference 
FROM events;

或者只获得差异:

SELECT TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference 
FROM events;