2013-05-10 23 views
0

如何按時間格式從數據庫中查詢小數。php - 計算按時間劃分的距離

有什麼想法?

$time = date($entity->getTime()->format('H:i:s')); 
$speed = $distance/$time 

這是絕對錯誤的,如果我的時間是00:40:00,我得到一些除零誤差。

我無法將其轉換爲秒,因爲php從數據庫中的時間格式中獲取DateTime。

+0

究竟什麼是「從數據庫中查詢時間」?你爲什麼說你的方法(請顯示它)是「一場災難」? – Voitcus 2013-05-10 10:06:04

+0

顯示您的代碼。 – 2013-05-10 10:06:10

回答

2

我建議你得到你的時間(秒),但你需要分鐘和小時轉換爲秒。

$seconds = date($entity->getTime()->format('s')); 
$minutes = date($entity->getTime()->format('i')); 
$hours = date($entity->getTime()->format('h')); 
$time = $hours * 3600 + $minutes * 60 + $seconds; 
$speed = $distance/$time; 
+0

感謝隊友。我想分享這種格式('H')假設是幾小時上限。如我錯了請糾正我。從KM/S轉換到KM/H,乘以* 3600的速度。再一次,謝謝! – vinz 2013-05-10 10:25:27

0

1)獲取時間,以秒

function time2seconds($time='00:00:00') 
{ 
    list($hours, $mins, $secs) = explode(':', $time); 
    return ($hours * 3600) + ($mins * 60) + $secs; 
} 

$time = date($entity->getTime()->format('H:i:s')); 
$timeInSeconds = time2seconds($time); 
$distance = 40000; 
$speed = $distance/$timeInSeconds; 

2)如果你正在使用MySQL數據庫的使用功能TIME_TO_SEC(time)

0

隨着strtotime是有點棘手,只有去24:59:59。 其他使用Voitcus解決方案。

$time = '00:40:00'; 
echo strtotime("1970-01-01 $time UTC"); 
0
$time = date($entity->getTime()->format('H:i:s')); 
$speed = $distance/$time 

這是錯誤的。你必須做到:

$speed = $distance/$time * 3.6; 

例如這個等式成立30km/H = 30000m * 3600 seconds * 3.6