2013-02-15 72 views
0

我需要根據商店的開放時間加上偏移量來生成交貨時間。打開時間正確生成,偏移量正確生成,但我似乎無法使它們正確組合。我已經試過這幾種方法:處理php mktime和日期時出現奇怪的結果

$open = array('open_hr' => 14, 'open_min' => 0); 

$tmpTime = mktime($open['open_hr'], $open['open_min']); 
$openTime = date('G:i', $tmpTime); 

$tmpOffset = 90; //in minutes 
$tmpOpenWithOffset = $tmpTime + $tmpOffset * 60; 
$finalTime = date('G:1', $tmpOpenWithOffset); 

echo "open time: " . $openTime . "; offset in minutes: " .$tmpOffset . "; final time: " .$finalTime; 

這樣做的結果是:

開放時間:14:00;以分鐘爲單位抵消:90;最終時間:15:1

我預計在14點加入90分鐘會導致15:30。

我也試着這樣說:

$open = array('open_hr' => 14, 'open_min' => 0); 
$tmpTime = mktime($open['open_hr'], $open['open_min']); 
$openTime = date('G:i', $tmpTime); 

$tmpOffset = 90; 
$finalTime = strtotime('+'.$tmpOffset . ' minutes', $openTime); 

echo "open time: " . $openTime . "; offset in minutes: " .$tmpOffset . "; final time: " .$finalTime; 

這導致:

open time: 14:00; offset in minutes: 90; final time: 5414 

我使用eval評估的strtotime的第一個參數,像這樣也試過:

$open = array('open_hr' => 14, 'open_min' => 0); 
$tmpTime = mktime($open['open_hr'], $open['open_min']); 
$openTime = date('G:i', $tmpTime); 

$tmpOffset = 90; 
$tmpStr = eval('+'.$tmpOffset . ' minutes'); 
$finalTime = strtotime($tmpStr, $openTime); 

echo "open time: " . $openTime . "; offset in minutes: " .$tmpOffset . "; final time: " .$finalTime; 

此結果是:

Parse error: syntax error, unexpected $end in /t.php(7) : eval()'d code on line 1 
open time: 14:00; offset in minutes: 90; final time: 

同樣,期望的結果是,加上90分鐘到14:00將返回15:30。我在這裏做錯了什麼?

回答

0

錯字:

$finalTime = date('G:1', $tmpOpenWithOffset); 

1取代我,當你把第一個解決方案

+0

這是沒有意義的應該解決您的問題。 'i'參數表示帶前導零的分鐘數(請參閱http://www.php.net/manual/en/function.date.php)。數字1不是'date()'的有效參數。 – EmmyS 2013-02-15 21:32:40

+0

對不起,我回去看看我的代碼。你的迴應是倒退,但我明白你在說什麼。我犯了一個錯字,需要用我寫的一封信來替換我使用的數字1。這確實解決了這個問題。謝謝。 – EmmyS 2013-02-15 21:33:40