2011-09-08 98 views
1

我怎麼能總結兩個日期?PHP中兩個日期的總和

我在這個格式JH兩個日期:I:S和我會想總結他們

我發現這個劇本,但沒有關於天參考,我是新來此,這裏是腳本,也許有人可以做出必要的改變。

<?php 

/** 
* @author Masino Sinaga, http://www.openscriptsolution.com 
* @copyright October 13, 2009 
*/ 

echo sum_the_time('01:45:22', '17:27:03'); // this will give you a result: 19:12:25 

function sum_the_time($time1, $time2) { 
    $times = array($time1, $time2); 
    $seconds = 0; 
    foreach ($times as $time) 
    { 
    list($hour,$minute,$second) = explode(':', $time); 
    $seconds += $hour*3600; 
    $seconds += $minute*60; 
    $seconds += $second; 
    } 
    $hours = floor($seconds/3600); 
    $seconds -= $hours*3600; 
    $minutes = floor($seconds/60); 
    $seconds -= $minutes*60; 
    return "{$hours}:{$minutes}:{$seconds}"; 
} 

?> 

用法:

所有我所需要的是從兩個任務總結兩個日期等: 任務1將採取1每天10小時20分鐘10秒 任務2將採取3天17小時35分鐘40秒

這樣的結果將是任務1和兩個

+4

添加兩個日期沒有太大的意義。例如,我想不出「今天+明天」的任何明智含義。增加一個日期和一個持續時間,產生一個日期('今天+7天),或者減去產生一個時間間隔的日期('today - yesterday == 1 day')是有意義的。 –

+0

@Daniel:你想總結兩個日期還是兩個持續時間? – Toto

回答

5

剛之間的總時間使用的strtotime轉換的日期和總結的時間戳,比轉換爲日期再次使用日期函數:

$tmstamp = strtotime($date1) + strtotime($date2); 
echo date("Y m d", $tmstamp) ; 

但是你爲什麼要在第一個地方添加兩個日期?

+0

我編輯的問題,所以我希望它很容易理解。我認爲你的代碼不工作,因爲我得到了相同的值($ tmstamp始終是相同的) – Daniel

-1

基本上他們所做的是將小時和分鐘轉換爲秒並添加這些。然後他們轉換回小時/分鐘。

您只需幾天轉化爲秒過於:

$seconds += $days * 3600 * 24 

,然後再轉換回來:

$days = floor($seconds/(3600*24)); 
$seconds -= $days*3600*24