No sabia si poner este mensaje en este foro o en el de php.
Tengo que obtener la hora española y no me vale la del servidor, por lo que he buscado y he encontrado como conectarme a un servidor NTP y obtener la hora ( http://www.kloth.net/software/timesrv1.php ), el codigo PHP es este:
Código PHP:
/Relojes
function query_time_server ($timeserver, $socket) {
/* Query a time server
(C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
$fp = fsockopen($timeserver,$socket,$err,$errstr,5);
# parameters: server, socket, error code, error text, timeout
if ($fp) {
fputs($fp,"\n");
$timevalue = fread($fp,49);
fclose($fp); # close the connection
}
else {
$timevalue = " ";
}
$ret = array();
$ret[] = $timevalue;
$ret[] = $err; # error code
$ret[] = $errstr; # error text
return($ret);
} # function query_time_server
/* Query a time server
(C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
$timeserver = "hora.roa.es";
$timercvd = query_time_server($timeserver,37);
if (!$timercvd[1]) { # if no error from query_time_server
$timevalue = bin2hex ($timercvd[0]);
//echo(HexDec($timevalue));
$timevalue = abs (HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff')) ;
$tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp
//$datum = date("Y-m-d (D) H:i:s",$tmestamp - date("Z",$tmestamp)); /* incl time zone offset */
$hora = date("H",$tmestamp - date("Z",$tmestamp));
$minutos = date("i",$tmestamp - date("Z",$tmestamp));
$hora_esp = $hora + 2;
}
else {
echo "Unfortunately, the time server $timeserver could not be reached at this time. ";
echo "$timercvd[1] $timercvd[2].<br>\n";
}
¿se podría obtener la hora española directamente del servidor?
Gracias.