2013-04-22 55 views
0

我正在尋找將來自sql查詢的兩次加在一起。以下是我的代碼。在php中添加兩次在一起

$taskID = $row['taskID']; 
$startTimeRaw = $row['startTime']; 
$endTimeRaw = $row['endTime']; 
$everyMinutesRaw = $row['everyMinutes']; 
$startTime = $startTimeRaw->format('H:i:s'); 
$endTime = $endTimeRaw->format('H:i:s'); 
$everyMinutes = $everyMinutesRaw->format('H:i:s'); 

#$latestRunTime = $startTime; 
$latestRunTimeRaw = $startTime + $everyMinutes; 


echo $startTime."<BR>"; 
echo $everyMinutes."<BR>"; 
echo $latestRunTime."<BR>"; 

此代碼返回下面

06:05:00 
00:15:00 
6 

返回的第三行應該是06:20:00,我怎麼能做出這種改變。我玩過strtotime->format(),但似乎沒有得到正確的答案。思考?

與包含在其他的答案,我有這個

$latestRunTime = strtotime($startTime) + strtotime($everyMinutes); 

數據,並將其輸出

2733243600 

如果我格式化,我得到以下

Fatal error: Call to a member function format() on a non-object in 
+1

是否有可能爲你改變數據庫查詢,返回這個數據?在這種情況下,通過使數據庫爲您執行日期算法來解決問題。 – mzedeler 2013-04-22 17:58:35

+0

不幸的是我不能在這種情況下。我將使用這些數據遍歷一個循環並寫入一個新表格 – mhopkins321 2013-04-22 17:59:03

+0

http://stackoverflow.com/questions/11720845/php-add-two-time-variables – 2013-04-22 17:59:45

回答

1

這似乎成爲你的後代:

<?php 
$period = new DatePeriod(
     new DateTime('06:05:00'), 
     DateInterval::createFromDateString('15 minutes'), 
     new DateTime('07:00:00')); 
foreach($period as $interval){ 
     echo $interval->format('c').PHP_EOL; 
} 

結果:

2013-04-22T06:05:00+02:00 
2013-04-22T06:20:00+02:00 
2013-04-22T06:35:00+02:00 
2013-04-22T06:50:00+02:00 

你也可以使用new DateInterval('PT15M'),或者更正式從時間:

new DateInterval('PT'.$everyMinutesRaw->format('H\Hi\Ms\S')); 

如果你沒有興趣在所有的時間間隔,但只是想第一個按照您的示例:

$startTimeRaw->add(new DateInterval('PT'.$everyMinutesRaw->format('H\Hi\Ms\S'))); 
echo $startTimeRaw->format('H:i:s'); 
+0

我已經考慮使用dateinterval非常強烈。唯一的問題是,使用來自數據庫的一個查詢,可能會有一個90的整數,每1.5小時表示一次。用不同的查詢,它以「01:30:00」的形式出現。所以這對我來說是一種損失 – mhopkins321 2013-04-22 18:36:32

+0

嗯,如果那些是唯一的兩種格式,你可以用'strstr'來檢測它嗎?:'?在這種情況下首先要做的是檢測兩個輸入並將它們轉換爲一個可用的已知數量。 – Wrikken 2013-04-22 18:40:50

+0

可能嗎?我非常新的PHP和我日期時間的詛咒永遠不會很好地工作似乎跟隨我到每種語言我去 – mhopkins321 2013-04-22 18:41:55

1

使用此功能

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; 
    if($seconds < 9) 
    { 
    $seconds = "0".$seconds; 
    } 
    if($minutes < 9) 
    { 
    $minutes = "0".$minutes; 
    } 
    if($hours < 9) 
    { 
    $hours = "0".$hours; 
    } 
    return "{$hours}:{$minutes}:{$seconds}"; 
} 

使用此功能,在每一個地方只需要調用函數時你need..Thanks