Todos los servidores tienen la hora en GMT+0 pero según la configuración en php.ini nos mostrará cierta hora, lo puedes comprobar visualizando la hora completa date(«r»,time()), o con date(«l jS \of F Y h:i:s A – \G\M\T: P», time()) el problema se da cuando queremos mostrar la fecha/hora según una franja horaria específica, en php se puede configurar la hora usando date_default_timezone_set e indicando la franja según el parámetro que permite la función, pero en lo personal estoy acostumbrado a tener la hora del servidor de una tabla y según el GMT que le indico que me muestre la hora
Esta es una función que logra mostrar la fecha/hora dándole el GMT que deseas
<html> <head> <title>Fecha Actual</title> </head> <body> Hora del Servidor: <?php echo date("l jS \of F Y h:i:s A - \G\M\T: P", time());?><br /> <?php function mifechagmt($fecha_timestamp,$gmt=0) { $timestamp=$fecha_timestamp; //puedes poner aquí la hora en formato "Unix timestamp" obtenida de una tabla $diferenciahorasgmt = (date('Z', time()) / 3600 - $gmt) * 3600; //La diferencia de horas entre el GMT del servidor y el GMT que queremos, en mi caso mi servidor es GTM-4, y si quiero un GTM -5 la diferencia será de -1 hora $timestamp_ajuste = $timestamp - $diferenciahorasgmt; //restamos a la hora actual la diferencia horaria en mi caso será -1 hora $fecha = date("l jS \of F Y h:i:s A", $timestamp_ajuste); //mostramos la fecha/hora return $fecha; } ?> <table border="1"> <?php for ($i=-12;$i<=12;$i++) { echo "<tr><td>GMT $i</td><td>".mifechagmt(time(),$i)."</td></tr>"; } ?> </table> </body> </html>
mifechagmt() recibe 2 parámetros, una hora en formato UNIX que puede ser la actual o tomada de una tabla, y el GMT como valor numérico para mostrar la fecha/hora, ya si desean puede agregarle un tercer parámetro que les indique el formato a mostrar.
Lo puedes ver aquí en funcionamiento: http://www.elcodigofuente.com/ejemplos/fecha.php
Yo quisiera saber dos cosas, a este scripts se le puede añadir las horas que son por ejemplo +03:30? y añadir las lo del cambio de hora de verano?
Con esto solucione el error que me daba:
Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone
Saludos.
Pero no es mas facil hacer esto?
le restas o le sumas dependiendo donde te encuentres.