2013-04-28 84 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; 
相關問題