Utilidades PHP (Cambio de huso horario y Contador temporal)
Autor: Carles Araguz López, Publicat: 14:51:27 31/12/2007
___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
No hi ha comentaris per aquesta entrada.
Tots els comentaris estan moderats per l'administrador del Blog
Última visita:
01:39:26 10/09/2010