2013-02-15 3 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

나는 90 분에서 14:00까지 추가하면 15:30이 될 것으로 예상합니다. 나는 또한과 같이, strtotime의 첫 번째 PARAM을 평가하기 위해 eval를 사용하려고했습니다

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

:이 결과

$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 = 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); 

첫 번째 솔루션 이해되지 않는다

+0

을 때 문제를 해결해야 1 I 교체. 'i'매개 변수는 앞에 오는 0이있는 분을 나타냅니다 (http://www.php.net/manual/en/function.date.php 참조). 숫자 1은'date()'에 유효한 매개 변수가 아닙니다. – EmmyS

+0

죄송합니다. 돌아가서 제 코드를 살펴 봤습니다. 귀하의 답변은 거꾸로되었지만 귀하가하신 말씀을 봅니다. 오타를 만들었고 문자 1로 사용했던 숫자 1을 바꿀 필요가 있습니다. 그리고 그것은 실제로 문제를 해결했습니다. 감사. – EmmyS