PHP strtotime está errado (algumas vezes)?

Eu tenho esse problema com strtotime no meu código PHP que é errado, por vezes (apenas para alguns fusos horários) e é correto para os outros!

Não consigo entender minha cabeça.

Eu defini o<?php date_default_timezone_set('GMT'); ?> no topo da minha página também, mas isso não ajuda!

basicamente o que faz é adicionar ou subtrairoffset/3600 valor para o tempo definido em$time1 = strtotime('00:00'); dependendo das condições if e else if.

o valor offset / 3660 é a diferença de tempo entre dois fusos horários!

O código abaixo funciona para alguns locais e não para outros! basicamente, ele adicionará 1-2 horas extras ou retirará / subtrairá 1-2 horas extras algumas vezes (não o tempo todo).

ou seja, a diferença horária entre Abidjan e Londres é -1. a hora (valor) que deve ser mostrada é 23:00 como 00:00 - 01:00 = 23:00. mas o valor é mostrado é 00:00.

No entanto, como mencionei, funciona para alguns fusos horários. Ou seja, para a diferença de fuso horário entre Nova York e Londres, que é -5, o código funciona e mostra 19:00 como 00:00 - 05:00 = 19:00

Alguém poderia por favor lançar uma luz sobre isso?

aqui está o código em questão:

<?php
$time1 = strtotime('00:00');

if (0 > $offset)
{
   // For negative offset (hours behind)
  $hour_dif = date('H:i', strtotime($time1 -$offset/3600));
  $time1 = "{$hour_dif}";
}
elseif (0 < $offset)
{
   // For positive offset (hours ahead)
     $hour_dif = date('H:i', strtotime($time1 +$offset/3600));
     $time1 = "{$hour_dif}";

}
else
{
   // For offsets in the same timezone.
   $time1 = "in the same timezone";
}

echo "{$time1}";
?>

questionAnswers(1)

yourAnswerToTheQuestion