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}";
?>