2013-06-02 60 views
4

我有兩次 - 例如 - 當前時間 - 08:24和日期爲2013年2月2日,日/月/年yyyy格式 我有另一次13:46和日期是2012年12月31日。那麼,如何使用PHP計算兩小時之間的差異。 (即42.63小時) 提前致謝。計算PHP中兩次以小時計的差值

+0

您正在尋找的術語是「日期算術」。 –

回答

4

將它們都轉換爲時間戳值,然後減去以獲得以秒爲單位的差異。

$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24')); 
$ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46')); 
$diff = abs($ts1 - $ts2)/3600; 
+0

編輯:strtotime解析爲m/d/y或dmy,如此轉換/ to - 解析之前 – jcsanyi

+0

它給出了區別,但它不會告訴我差異是正面還是負面 –

+0

您可以移除abs()調用如果你需要保持差異的標誌。 '($ ts1 - $ ts2)/ 3600' – jcsanyi

1

如果您有日期作爲時間戳(如果需要,使用strtotime),那麼只需減去它們,可以選擇絕對值,然後除以3600(一小時內的秒數)。 Easy^_^

4

另一種方法是使用PHP的日期相關類。以下示例使用DateTime::diff()獲取DateInterval對象($interval)。然後它使用區間的屬性來達到區間中的總小時數。

$a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013'); 
$b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012'); 

$interval = $a->diff($b); 
$hours = ($interval->days * 24) + $interval->h 
      + ($interval->i/60) + ($interval->s/3600); 

var_dump($hours); // float(42.633333333333) 
1

我有一個簡單的解決方案,嘗試這一個 -

echo getTimeDiff("10:30","11:10"); 

function getTimeDiff($dtime,$atime) 
    { 
     $nextDay = $dtime>$atime?1:0; 
     $dep = explode(':',$dtime); 
     $arr = explode(':',$atime); 
     $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y'))); 
     $hours = floor($diff/(60*60)); 
     $mins = floor(($diff-($hours*60*60))/(60)); 
     $secs = floor(($diff-(($hours*60*60)+($mins*60)))); 
     if(strlen($hours)<2){$hours="0".$hours;} 
     if(strlen($mins)<2){$mins="0".$mins;} 
     if(strlen($secs)<2){$secs="0".$secs;} 
     return $hours.':'.$mins.':'.$secs; 
    } 
0

我認爲下面的代碼是非常有用的,以獲取有關如何使用PHP

function date_diff($date_1 , $date_2 , $format) { 
    $datetime1 = date_create($date_1); 
    $datetime2 = date_create($date_2); 

    $diff = date_diff($datetime1, $datetime2); 

    return $diff->format($format); 
} 

來計算時間差的主意以上函數可用於計算兩次以及日期之間的差異。日期以輸出格式作爲參數給出。

輸出格式在下面給出:

// '%Y年%米月%d日%H小時%I分鐘%s秒'=> 1年3月14日11小時49分鐘36秒 //'%y年%m月%d日'=> 1年3個月14天 //'%m月%d日'=> 3月14日 //'%d日%h小時'=> 14 Day 11 Hours //'%d Day'=> 14 Days //'%h Hours%i Minute%s Seconds'=> 11 Hours 49 Minute 36 Seconds //'%i分鐘%s秒= 49分36秒 //'%h小時=> 11小時 //'%a Days