Pergunta

I need to generate a delivery time based on a store's opening time plus an offset. The opening time is generated correctly, and the offset is generated correctly, but I can't seem to get them combined correctly. I've tried this several ways:

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

The result of this is:

open time: 14:00; offset in minutes: 90; final time: 15:1

I would expect that adding 90 minutes to 14:00 would result in 15:30.

I've also tried it this way:

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

This results in:

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

I've also tried using eval to evaluate the first param of strtotime, like so:

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

This results in:

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: 

Again, the desired result is that adding 90 minutes to 14:00 will return 15:30. What am I doing wrong here?

Foi útil?

Solução

typo:

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

replacing I with 1 should solve your problem when you take the first solution

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top