2013-04-28 45 views
1

我环顾四周,没有看到与我的数据库布局相当的工作。基本上我需要抽出当前时间和预定事件时间,并查看当前时间是否是事件时间前10分钟。这是我的测试文件,它将当前时间获取到变量中,然后从数据库表中抽取eventTime,将事件时间设置为变量,从事件时间中减去当前时间,并打印差异。问题是我需要分钟数,而且只是打印小时数。PHP在几分钟内获得时间差异

例如,11:00 - 9:15给了我1,我需要它说105(分钟数),我真的看了全部,并且找不到任何不会涉及改变数据库结构。

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

这里的一些测试代码,包含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>"; 
} 
?> 
+1

使用PHP的DateTime :: sub然后DateTime :: format – ioanb7 2013-04-28 18:01:07

+0

也许我误解了一些东西,但我的时间格式似乎不允许我这样做,我将如何将存储在数据库中的时间作为varchar转换为某些东西(据我所知,自1970年以来的秒数),我可以使用这些函数? – salty 2013-04-28 18:06:21

+1

将DateTime :: setTime与您的值一起使用。如果你想要现在的时间,只需'new DateTime('now')'。之后,您可以使用DateTime :: format将其转换回您的格式。 – ioanb7 2013-04-28 18:09:36

回答

4
$datetime1 = new DateTime(); 
$datetime2 = new DateTime($row['eventTime']); 
$interval = $datetime1->diff($datetime2); 
$elapsed = $interval->format('%i minutes'); 
echo $elapsed; 
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; 
相关问题