No se que ocurre otra que sea problema de la hora del server. Yo tengo un problema similar y no quize continuar perdiendo tiempo, por lo que le sumo una hora a la que me devuelve. En tu caso tendrías que restar:
Código:
putenv('TZ=America/Buenos_Aires');
$date = date("y-m-d");
$time = date(" H:i:s",time());
list($hora1, $minut, $seg) = split('[:]', $time);
$time=date("H:i:s", mktime($hora1-1, $minut, $seg));
De esta forma tenes en $date y $time lo que queres. En el caso de putenv() es la fecha/hora de tu país. Si no es ese, cambialo :P