<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1476" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Viva,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Sou novo nesta lista. Para resumir um pouco a minha 
apresentação, sou um jovem com quase 40 anos, divorciado, com um filho 
maravilhoso de 19 anos, e, desde que me lembro, estudo temáticas desde o Oculto 
( astrologia, cabala, etc. ) à mecânica celeste ( a minha grande paixão ), 
usando as tecnologias que vão aparecendo ( lápis, papel&nbsp;e borracha, 
spectrum, PC, basic, Visual Basic, Perl, etc. ). Herois: Ptolomeu, Einstein, 
Gauss e&nbsp;Carl Sagan. Mais recentes: Myles Standish, da JPL/NASA. Profissão: 
programador web ( principalmente ).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>E, é neste âmbito, que venho colocar a primeira 
questão: diz respeito ao módulo DateTime::TimeZone ( que eu não consigo pôr a 
funcionar ). Seja como fôr, o que preciso é de saber a lógica dos ficheiros pm 
das cidades. 95 % do ficheiro está descodificado. Mas, no fim, as observâncias e 
regras, não. Por exemplo para Europe/Lisbon temos:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV>my $last_observance = bless( {<BR>&nbsp; 'format' =&gt; 'WE%sT',<BR>&nbsp; 
'gmtoff' =&gt; '0:00',<BR>&nbsp; 'local_start_datetime' =&gt; bless( 
{<BR>&nbsp;&nbsp;&nbsp; 'formatter' =&gt; undef,<BR>&nbsp;&nbsp;&nbsp; 
'local_rd_days' =&gt; 728749,<BR>&nbsp;&nbsp;&nbsp; 'local_rd_secs' =&gt; 
7200,<BR>&nbsp;&nbsp;&nbsp; 'offset_modifier' =&gt; 0,<BR>&nbsp;&nbsp;&nbsp; 
'rd_nanosecs' =&gt; 0,<BR>&nbsp;&nbsp;&nbsp; 'tz' =&gt; bless( 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name' =&gt; 
'floating',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'offset' =&gt; 
0<BR>&nbsp;&nbsp;&nbsp; }, 'DateTime::TimeZone::Floating' 
),<BR>&nbsp;&nbsp;&nbsp; 'utc_rd_days' =&gt; 728749,<BR>&nbsp;&nbsp;&nbsp; 
'utc_rd_secs' =&gt; 7200,<BR>&nbsp;&nbsp;&nbsp; 'utc_year' =&gt; 1997<BR>&nbsp; 
}, 'DateTime' ),<BR>&nbsp; 'offset_from_std' =&gt; 0,<BR>&nbsp; 
'offset_from_utc' =&gt; 0,<BR>&nbsp; 'until' =&gt; [],<BR>&nbsp; 
'utc_start_datetime' =&gt; bless( {<BR>&nbsp;&nbsp;&nbsp; 'formatter' =&gt; 
undef,<BR>&nbsp;&nbsp;&nbsp; 'local_rd_days' =&gt; 728749,<BR>&nbsp;&nbsp;&nbsp; 
'local_rd_secs' =&gt; 3600,<BR>&nbsp;&nbsp;&nbsp; 'offset_modifier' =&gt; 
0,<BR>&nbsp;&nbsp;&nbsp; 'rd_nanosecs' =&gt; 0,<BR>&nbsp;&nbsp;&nbsp; 'tz' =&gt; 
bless( {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name' =&gt; 
'floating',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'offset' =&gt; 
0<BR>&nbsp;&nbsp;&nbsp; }, 'DateTime::TimeZone::Floating' 
),<BR>&nbsp;&nbsp;&nbsp; 'utc_rd_days' =&gt; 728749,<BR>&nbsp;&nbsp;&nbsp; 
'utc_rd_secs' =&gt; 3600,<BR>&nbsp;&nbsp;&nbsp; 'utc_year' =&gt; 1997<BR>&nbsp; 
}, 'DateTime' )<BR>}, 'DateTime::TimeZone::OlsonDB::Observance' )<BR>;<BR>sub 
_last_observance { $last_observance }<BR><BR>my $rules = [<BR>&nbsp; bless( 
{<BR>&nbsp;&nbsp;&nbsp; 'at' =&gt; '1:00u',<BR>&nbsp;&nbsp;&nbsp; 'from' =&gt; 
'1996',<BR>&nbsp;&nbsp;&nbsp; 'in' =&gt; 'Oct',<BR>&nbsp;&nbsp;&nbsp; 'letter' 
=&gt; '',<BR>&nbsp;&nbsp;&nbsp; 'name' =&gt; 'EU',<BR>&nbsp;&nbsp;&nbsp; 
'offset_from_std' =&gt; 0,<BR>&nbsp;&nbsp;&nbsp; 'on' =&gt; 
'lastSun',<BR>&nbsp;&nbsp;&nbsp; 'save' =&gt; '0',<BR>&nbsp;&nbsp;&nbsp; 'to' 
=&gt; 'max',<BR>&nbsp;&nbsp;&nbsp; 'type' =&gt; undef<BR>&nbsp; }, 
'DateTime::TimeZone::OlsonDB::Rule' ),<BR>&nbsp; bless( {<BR>&nbsp;&nbsp;&nbsp; 
'at' =&gt; '1:00u',<BR>&nbsp;&nbsp;&nbsp; 'from' =&gt; 
'1981',<BR>&nbsp;&nbsp;&nbsp; 'in' =&gt; 'Mar',<BR>&nbsp;&nbsp;&nbsp; 'letter' 
=&gt; 'S',<BR>&nbsp;&nbsp;&nbsp; 'name' =&gt; 'EU',<BR>&nbsp;&nbsp;&nbsp; 
'offset_from_std' =&gt; 3600,<BR>&nbsp;&nbsp;&nbsp; 'on' =&gt; 
'lastSun',<BR>&nbsp;&nbsp;&nbsp; 'save' =&gt; '1:00',<BR>&nbsp;&nbsp;&nbsp; 'to' 
=&gt; 'max',<BR>&nbsp;&nbsp;&nbsp; 'type' =&gt; undef<BR>&nbsp; }, 
'DateTime::TimeZone::OlsonDB::Rule' )<BR>]<BR>;<BR></DIV>
<DIV><FONT face=Arial size=2>As regras são mais ou menos compreensíveis: a hora 
de verão começa (? não parece haver indicador disso nos parâmetros ) no último 
Domingo de qualquer ano igual ou superior a 1981.Mas a que horas? Devemos 
avançar ou recuar que quantidade de tempo? Qual a diferença total em relação ao 
UTC?</FONT></DIV>
<DIV><FONT face=Arial size=2>A regra - correcta e em vigor - é a 
seguinte:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV>Portugal&nbsp; Continental&nbsp; &gt; UTC+1 desde o último Domingo de 
Março&nbsp;às 01:00&nbsp;ao último Domingo&nbsp;de Outubro&nbsp;às &nbsp;02:00 
-&nbsp;Europe/Lisbon</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Como deduzir isto da informação acima? É que tudo 
parece trocado...ou então já estou edmasiado cansado...</FONT><BR></DIV>
<DIV><FONT face=Arial size=2>Alguma ideia?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Melhores cumprimentos / Kind regards,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Rui Miguel Fernandes<BR>Porto - 
Portugal</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>