[Cascavel-pm] Problemas com um Módulo

Rui Fernandes ruifernandes em tvtel.pt
Sexta Junho 17 12:30:40 PDT 2005


Viva,

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 e borracha, spectrum, PC, basic, Visual Basic, Perl, etc. ). Herois: Ptolomeu, Einstein, Gauss e Carl Sagan. Mais recentes: Myles Standish, da JPL/NASA. Profissão: programador web ( principalmente ).

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:

my $last_observance = bless( {
  'format' => 'WE%sT',
  'gmtoff' => '0:00',
  'local_start_datetime' => bless( {
    'formatter' => undef,
    'local_rd_days' => 728749,
    'local_rd_secs' => 7200,
    'offset_modifier' => 0,
    'rd_nanosecs' => 0,
    'tz' => bless( {
      'name' => 'floating',
      'offset' => 0
    }, 'DateTime::TimeZone::Floating' ),
    'utc_rd_days' => 728749,
    'utc_rd_secs' => 7200,
    'utc_year' => 1997
  }, 'DateTime' ),
  'offset_from_std' => 0,
  'offset_from_utc' => 0,
  'until' => [],
  'utc_start_datetime' => bless( {
    'formatter' => undef,
    'local_rd_days' => 728749,
    'local_rd_secs' => 3600,
    'offset_modifier' => 0,
    'rd_nanosecs' => 0,
    'tz' => bless( {
      'name' => 'floating',
      'offset' => 0
    }, 'DateTime::TimeZone::Floating' ),
    'utc_rd_days' => 728749,
    'utc_rd_secs' => 3600,
    'utc_year' => 1997
  }, 'DateTime' )
}, 'DateTime::TimeZone::OlsonDB::Observance' )
;
sub _last_observance { $last_observance }

my $rules = [
  bless( {
    'at' => '1:00u',
    'from' => '1996',
    'in' => 'Oct',
    'letter' => '',
    'name' => 'EU',
    'offset_from_std' => 0,
    'on' => 'lastSun',
    'save' => '0',
    'to' => 'max',
    'type' => undef
  }, 'DateTime::TimeZone::OlsonDB::Rule' ),
  bless( {
    'at' => '1:00u',
    'from' => '1981',
    'in' => 'Mar',
    'letter' => 'S',
    'name' => 'EU',
    'offset_from_std' => 3600,
    'on' => 'lastSun',
    'save' => '1:00',
    'to' => 'max',
    'type' => undef
  }, 'DateTime::TimeZone::OlsonDB::Rule' )
]
;

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?
A regra - correcta e em vigor - é a seguinte:

Portugal  Continental  > UTC+1 desde o último Domingo de Março às 01:00 ao último Domingo de Outubro às  02:00 - Europe/Lisbon

Como deduzir isto da informação acima? É que tudo parece trocado...ou então já estou edmasiado cansado...

Alguma ideia?

Melhores cumprimentos / Kind regards,

Rui Miguel Fernandes
Porto - Portugal

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20050617/c8e6aba0/attachment.html


Mais detalhes sobre a lista de discussão Cascavel-pm