Si, es un problema recurrente. Yo lo resolví definitivamente con lo que sigue... lo pongo en un include y la variable '
$ahora' es la hora que és, según la '
zona' que has definido.... y te da igual en qué zona está el server.
Un saludo.
Código PHP:
<?php
// desde el server a GMT_local (España == '+1')
function GetTZOffset( $GMT_local ) {
$Offset = date("O", 0); // Diferencia con la hora Greenwich (GMT) en horas.
$Parity = $Offset < 0 ? -1 : 1;
$Offset = $Parity * $Offset;
$Offset = ($Offset - ($Offset % 100))/100*60 + $Offset % 100;
$TZOffset = $Parity * $Offset;
$TZOffset = (0 - ($TZOffset*60)) + ($GMT_local * 3600);
return $TZOffset;
}
$zona = "+1"; // CET, Madrid
$ahora = time() + GetTZOffset( "+1" );
setlocale( LC_ALL, 'spanish' );
echo "Hora GMT$zona ahora: " . strftime( "%A %d %B %Y - %H:%M:%S", $ahora ) . "<br>";
?>