2012-07-30 42 views
5

在我的PHP應用程序中,我想計算兩個時間變量的總和。我正在尋找這樣的例子。PHP加起來兩個時間變量

$time1 = 15:20:00; 
$time2 = 00:30:00; 
$time = $time1+$time2; 
+4

你是怎麼試圖做到這一點的? – Fluffeh 2012-07-30 11:45:25

+1

你有什麼樣的結果應該是什麼樣子的例子? – Pete 2012-07-30 11:46:46

+1

DateTime和DateInterval類。 http://www.php.net/manual/en/book.datetime.php – dnagirl 2012-07-30 11:47:05

回答

3

做到這一點,最好的方法是最有可能使用的strtotime將它們轉換爲時間標記,然後進行相加在一起:

$o = strtotime($time1)+strtotime($time2);

如果我記得沒錯strtotime不支持此格式。

否則,您需要自行過濾。

+0

結果應該增加當前時間+我從DB取的時間變量說$ tim2 – Rakesh 2012-07-30 11:50:01

+0

'時間()+ strtotime($ mysql_date);'作品 – Sammaye 2012-07-30 11:51:37

+0

$ time = date(「H:i:s」)+ strtotime($ mysql_time);你是這個意思..? – Rakesh 2012-07-30 12:01:10

-1

代碼:

$time1 = '15:20:00'; 
$time2 = '00:30:00'; 
$time = strtotime($time1)+strtotime($time2); 
$sumtime = date("H:i:s",$time); 
+0

嗨sumesh如何添加當前時間+ $ time2 ..? – Rakesh 2012-07-30 11:58:19

+0

這個人應該返回'15:50:00'但是返回'09:21:44' – 2013-12-02 08:51:02

+0

你甚至試過這個嗎? – Kashyap 2015-12-17 09:43:47

2

你可以使用PHP 5.3 DateInterval

$timeInterval = DateInterval::createFromDateString('15 hours + 20 minutes'); 
$timeInterval2 = DateInterval::createFromDateString('30 minutes'); 

foreach(str_split('ymdhis') as $prop) 
{ 
    $timeInterval->$prop += $timeInterval2->$prop; 
} 
var_dump($timeInterval->format('%H:%i:%s')); 

(如何添加到DateInterval對象是在這裏解釋:How we can add two date intervals in PHP

0

至於我可以說,Sammaye的答案對我沒有幫助。

我需要開始時間,我想添加UNIX時間戳的開始。這樣,strtotime返回第一次需要添加的秒數。

$time1 = "15:20:00"; 
$time2 = "1970-01-01 00:30:00"; 
$time = strtotime($time1) + (strtotime($time2) + 3600); 
echo $time . "<br />"; 
echo date("H:i:s", $time); 
0

一定要諮詢神祕文檔http://us1.php.net/strtotime你可以輸入額外的東西進入你的功能:)

$today = time(); 
$tommorrow = strtotime("+1 days", $today); 
$day_after_tomorrow = strtotime("+1 days", $tomorrow); 
3

如果你希望答案是15:50:00,並要使用strtotimedate功能,您需要在將它們轉換爲unix時間戳時減去秒數$time1$time2的份額:

$time1 = '15:20:00'; 
$time2 = '00:30:00'; 
$time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00'); 
$time = date('H:i:s', $time); 
+2

這非常簡單,但如果您可以提供有關減去0值時間的進一步解釋,則它會更相關。 – rhavendc 2017-09-19 03:43:47

4

以下回答不會返回正確的值。它總結了整數,但沒有返回正確的時間。

$ o = strtotime($ time1)+ strtotime($ time2);

我創建了一個函數來計算時間如下。

public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){ 
     $time2_arr = []; 
     $time1 = $time1; 
     $time2_arr = explode(":", $time2); 
     //Hour 
     if(isset($time2_arr[0]) && $time2_arr[0] != ""){ 
      $time1 = $time1." +".$time2_arr[0]." hours"; 
      $time1 = date("H:i:s", strtotime($time1)); 
     } 
     //Minutes 
     if(isset($time2_arr[1]) && $time2_arr[1] != ""){ 
      $time1 = $time1." +".$time2_arr[1]." minutes"; 
      $time1 = date("H:i:s", strtotime($time1)); 
     } 
     //Seconds 
     if(isset($time2_arr[2]) && $time2_arr[2] != ""){ 
      $time1 = $time1." +".$time2_arr[2]." seconds"; 
      $time1 = date("H:i:s", strtotime($time1)); 
     } 

     return date("H:i:s", strtotime($time1)); 
    } 
+0

是的,你的情況有點複雜,需要更多的使用strototime – Sammaye 2016-06-03 08:24:34

+0

是的。確實如此。我們可以使用這種解決方案,直到找到解決問題的更好方法 – cha 2016-06-03 09:10:56