[caracas-pm] Errores de timezone con Date::Manip

Ernesto Hernández-Novich emhn at telcel.net.ve
Fri Feb 11 12:33:04 PST 2005


On Fri, 2005-02-11 at 11:42 -0400, Rosa Campos wrote:
> estoy usando la funcion DateCalc de Date:.Manip
>  
> $x=DateCalc($fi[$j],$ff[$j],$error,$modo);
> 
> y me dice lo siguiente
> 
> ERROR: Date::Manip unable to determine TimeZone.

El módulo Date::Manip necesita saber la zona horaria en la cual estás
trabajando. La zona horaria se define con la variable de ambiente TZ
utilizando la forma convencional de definir zonas horarias como un
desplazamiento a partir de UTC. En el caso de Venezuela, debe servirte

#!/usr/bin/perl
use Date::Manip;
$Date::Manip::TZ = '-0400';
Date_Init();
...
(operaciones con Date::Manip han de funcionar bien)

Fíjate que también podría utilizar $ENV{TZ}, pues lo que hace es asignar
la variable de ambiente TZ. El módulo Date::Manip busca
_automáticamente_ esa variable; tener que especificarla a mano en los
programas no es una buena idea. Prueba

$ env | grep TZ

y si no reporta valores, quiere decir que el administrador del sistema
no ha colocado un valor por defecto para TZ (no es ni bueno, ni malo,
simplemente no lo ha hecho). Dependiendo del uso del sistema, sería
conveniente que todos los usuarios tuviesen la zona horaria por defecto
asignada, y aquellos excepcionales (que viven en otros países pero se
conectan a ese servidor) tengan un valor diferente.

Puedes probar

$ TZ="-0400"; export TZ

y luego correr tu programa sin modificar, seguramente funcionará.

> revise la documentacion, y no se que hacer

En el manual de Date::Manip hay una sección dedicada a timezones, que
indica los lugares donde Date::Manip busca, y como asignarlo.
-- 
Ernesto Hernández-Novich - On Linux 2.6.10 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't apt-get it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3



More information about the caracas-pm mailing list