Utilidades PHP (Cambio de huso horario y Contador temporal)
Autor: Carles Araguz López, Publicat: 14:51:27 31/12/2007
Categories: Tricks, Programació.

___Muy a menudo, al trabajar con PHP, necesitamos imprimir o usar la fecha actual. Esto es posible gracias a la función date que incorpora PHP desde su versión 4.

string date ( string $format [, int $timestamp ] )


El primer parámetro es el formato de fecha que deseamos, mientras que el segundo es la hora en formato UNIX. Este segundo valor, es opcional y si no se incluye su valor es, por defecto, el valor de la función time (segundos transcurridos des del 1 de enero de 1970 a las 00:00:00 GTM).
La función date nos devuelve una string con el formato de fecha que le indicamos.
Un ejemplo:
<?php

$now = date("H:i:s D/M/Y");
print "Now: ".$now;
?>

Esto nos devolvería la fecha actual en formato:
(Horas):(minutos):(segundos) (dia)/(mes)/(año completo)
13:46:21 31/12/2007


El problema llega cuando necesitamos usar la fecha local y nuestro servidor está en otro país, o necesitamos la hora en otro huso horario en general. Para ello, existe la función strtotime:
int strtotime ( string $time[, int $now ] )

Con ella podemos sumar o restar horas, segundos, días o lo que haga, por tal de dejar nuestra fecha bien ajustada. Si quisiéramos cambiar el uso horario de GTM -5 a GTM +1 (de la hora de New York a la de Paris) sólo deberíamos sumar 6 horas (la diferencia) al valor de tiempo que nos devuelva el servidor que supuestamente está en New York, tal que así:
<?php

$new_time = strtotime("+6 hours");
$now = date("H:i:s D/M/Y", $new_time);
print "Now: ".$now;
?>


Esto nos devolvería la hora en nuestro huso horario. Otras aplicaciones de strtotime pueden ser las de contador de tiempo. Podemos decirle a strtotime que nos devuelva los segundos que han pasado hasta la fecha que queramos, por ejemplo: strtotime("30 December 2007") nos devolverá los segundos transcurridos hasta esa fecha. Si restamos los segundos actuales con los de una fecha pasada el resultado será el número de segundos que han transcurrido. Dividiendo pertinentemente podemos desglosarlos en días, horas o minutos.

<?php

// Cuantos días han pasado desde el 20 de diciembre de 2007
$seconds_base = strtotime("20 December 2007",strtotime("+9 hours"));
$seconds_now = time();
$seconds_diference = $seconds_now-$seconds_base; // integer
$days = round($seconds_diference/86400,0);
print "Seconds base: ".$seconds_base."<br />"
."Seconds now: ".$seconds_now."<br />"
."Seconds diference: ".$seconds_diference."<br />"
."Days: ".$days."<br />";
?>


Para más información visitad el manual de PHP.net para cada función:
time, strtotime y date.

Agefir a Menéame, a del.icio.us o envia'l per mail a un amic

separador



COMENTARIS

No hi ha comentaris per aquesta entrada.

Digue's la teva
Nom:


E-mail (no es publicarà) (no obligatori):


Web o blog personal (no obligatori):

EXEMPLE: http://www.server.com

Comentari
Pots fer servir etiquetes BBCode


Introdueix el codi:

Tots els comentaris estan moderats per l'administrador del Blog





Última visita:
01:39:26 10/09/2010