PHP以分钟为单位获取时差

PHP以分钟为单位获取时差,php,date,date-math,Php,Date,Date Math,我环顾四周,发现我的数据库布局没有什么效果。基本上,我需要获取当前时间和预定的事件时间,看看当前时间是否比事件时间早10分钟。这是我的测试文件,它将当前时间获取到一个变量中,然后从数据库表中提取eventTime,将event time设置为一个变量,从event time中减去当前时间,然后打印差值。问题是我需要会议记录,而它只是打印时间 例如,11:00-9:15给了我1,我需要它说105(分钟数),我真的找遍了所有地方,找不到任何不涉及更改db结构的内容 数据库以小时和分钟为单位存储24小

我环顾四周,发现我的数据库布局没有什么效果。基本上,我需要获取当前时间和预定的事件时间,看看当前时间是否比事件时间早10分钟。这是我的测试文件,它将当前时间获取到一个变量中,然后从数据库表中提取eventTime,将event time设置为一个变量,从event time中减去当前时间,然后打印差值。问题是我需要会议记录,而它只是打印时间

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

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

下面是一些测试代码,include 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>";
}
?>

别忘了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;

别忘了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;

使用PHP DateTime::sub,然后使用DateTime::format可能我误解了什么,但我的时间格式似乎不允许我这么做,我如何将存储在db中的时间作为varchar转换为可以使用这些函数的时间(据我所知,从1970年起的秒数)?使用DateTime::setTime和您的值。如果您想要当前时间,只需
newdatetime('now')
。之后,您可以使用DateTime::format将其转换回您的格式。谢谢!在你和约翰·康德之间,在这下面,你们向我展示了我完全误解了间隔是如何工作的,我将在工作的代码中进行编辑!使用PHP DateTime::sub,然后使用DateTime::format可能我误解了什么,但我的时间格式似乎不允许我这么做,我如何将存储在db中的时间作为varchar转换为可以使用这些函数的时间(据我所知,从1970年起的秒数)?使用DateTime::setTime和您的值。如果您想要当前时间,只需
newdatetime('now')
。之后,您可以使用DateTime::format将其转换回您的格式。谢谢!在你和约翰·康德之间,在这下面,你们向我展示了我完全误解了间隔是如何工作的,我将在工作的代码中进行编辑!