2012-09-13 68 views
2

我有以下格式的Mysql表shift_def。如何在php中查找兩個時間間隔的持續時間?

+-------------------------------------------------------------------------------+ 
| id | name | start_time | end_time | description | break | 
|-------------------------------------------------------------------------------| 
| 101 | Shift1 | 01:03:55 | 06:00:55 | Shift 1  | 1  | 
|-------------------------------------------------------------------------------| 
| 102 | Shift2 | 06:03:55 | 01:00:55 | Shift 2  | 3  | 
+-------------------------------------------------------------------------------+ 

查找總的移位持續時間。我在我的php中執行以下過程。

$shift_time = mysql_query("select start_time, end_time from rpt_shift_def where name ='Shif1'")or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($shift_time)) 
     { 
      $Total_shift_time = strtotime($row['end_time']) - strtotime($row['start_time']); 
      $hours=floor($Total_shift_time/3600); 
      $Total_shift_time-=$hours*3600; 
      $minutes=floor($Total_shift_time/60); 
      $Total_shift_time-=$minutes*60; 
      $seconds=$Total_shift_time; 
      $Total_shift_time=$hours.":".$minutes.":".$seconds;*/                                                                                            
      echo "$Total_shift_time"; 
      echo "</br>"; 
     } 

輸出是

4:57:0 

當我嘗試相同的用於換檔2的期望輸出是

18:57:0 

但輸出是

-6:57:0 

負值是因爲s的end_time hift 2小於start_time。 如何解決這個問題。

任何人都可以幫助我。

回答

1

如果結束時間少於開始時間,則增加24小時(原因是換班在第二天結束)。

既然你已經計算了$Total_shift_time,你可以檢查一下是否爲負值。

if($Total_shift_time < 0) { 
    $Total_shift_time += 86400; // Number of seconds in a day 
} 

錯誤...確保你這樣做之後,你先計算換擋時間,你就會開始計算小時,分鐘和秒......之前

+0

就是這個想法我也有。但它不起作用。可能是我在實施時出錯了。這是我試過的。 '$ in24hourstime = strtotime('+ 24 hours',$ end_time); $ Total_shift_time = strtotime($ in24hourstime) - strtotime($ row ['start_time']);'。但它不起作用。 – Allen

+0

我編輯了我的答案。這應該是你需要做的一切。 – paddy

+0

其工作。謝謝。 – Allen

相關問題