Time() devuelve la hora actual del sistema .. con date() formatearias esos segundos (fecha) al ajuste horario del pais que tenga configurado (franja horaria) de ese servidor.
Si quieres obtener la fecha GMT (0) debes usar gmdate("formato fecha",time()); ) o sin time() .. )
Si quieres componer fechas en formato GMT .. debes de usar las funciones gmxxxx() pero no mezclaras (con las no gmt).
En tu caso particular .. no te dá lo mismo esa llamada a gmmktime() y formada con tus gmdate() por qué en el mes estás obteniendolo con dos digítos 01, 02, 03 .. etc .. No sé si será valido como parámetro de gmmktime() .. pero por mi parte siempre he usado "n" para obtener el mes (con un sólo digito, 1,2,3, etc ..) en lugar de "m" que lo devuelve a dos digitos.
Un ejemplo que hice hace algún tiempo:
Código PHP:
<?php
function fecha_ahora_gmt ($dif_gtm=0){
$meses=array(1=>"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$dias=array(1=>"Lunes","Martes","Miercoles","Jueves","Viernes","Sábado","Domingo");
$fecha_gmt=gmmktime(gmdate("H")+$dif_gtm,gmdate("i"),gmdate("s"),gmdate("n"),gmdate("j"),gmdate("Y"));
$fecha_ahora_diaNum = gmdate ("j",$fecha_gmt);
$fecha_ahora_diaNom = gmdate ("w");
$fecha_ahora_mes = gmdate ("n",$fecha_gmt);
$fecha_ahora_year = gmdate ("Y",$fecha_gmt);
$fecha_ahora_hora = gmdate ("H:i:s a",$fecha_gmt);
$fecha_ahora = $dias[$fecha_ahora_diaNom].", ".$fecha_ahora_diaNum." de ".$meses[$fecha_ahora_mes]." de ".$fecha_ahora_year.", a las ".$fecha_ahora_hora;
return $fecha_ahora;
}
$dif_gtm=0; // diferencia horaria con respecto a la hora GTM
$hoy=fecha_ahora_gmt($dif_gtm);
echo "Hoy es: ".$hoy;
?>
Un saludo,