[SP-pm] Perl e horário de verão

Stanislaw Pusep creaktive at gmail.com
Sat Mar 1 11:32:41 PST 2014


Esta data é "apenas" o início do horário de verão! Não existe meia-noite do
dia 19 de Outubro de 2014 no Brasil, o relógio muda de 23:59:59 direto para
01:00:00. O comportamento do DateTime é polêmico nesse caso pois a
documentação sugere que "Date" e "Time" serão tratados como duas partes
relativamente independentes. Só que não é assim que funciona: se você
omitir a parte do "Time", 00:00:00 será usado por default, o que tem
implicações esquisitas. Infelizmente, meia-noite não é a única excessão, em
alguns períodos/timezones a hora "pula" de 1am para 2am ou mesmo 2am para
3am. Empiricamente, assume-se que meio-dia é uma hora default segura para
inicializar o objeto DateTime. E a documentação, fala disso? Não!
Olha, DateTime é espetacular de tão útil, mas precisa conhecer bem para não
dar o tiro no próprio pé. Ou, sei lá, para o tiro só pegar de raspão.


2014-03-01 20:04 GMT+01:00 Tiago Peczenyj <tiago.peczenyj em gmail.com>:

> vai ver que essa data, a 00:00:00, tem alguma peculiaridade.
>
> será? Eu estou do lado do DateTime. E vc?
>
>
> 2014-03-01 15:35 GMT-03:00 Stanislaw Pusep <creaktive em gmail.com>:
>
> ORLY???
>>
>> $ perl -MDateTime -le 'DateTime->new(year => 2014, month => 10, day =>
>> 19, time_zone => "America/Sao_Paulo"); print "OK"'
>> Invalid local time for date in time zone: America/Sao_Paulo
>>
>> Where's your God now?
>>
>>
>> 2014-03-01 18:52 GMT+01:00 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>>
>> Use DateTime. É bom
>>> Em 01/03/2014 14:04, "Geraldo Netto" <geraldonetto em gmail.com> escreveu:
>>>
>>> Opa!
>>>>
>>>> Ehehehhe!!!
>>>>
>>>> Devo admitir aqui que a maior parte do desenvolvimento que eu faço é
>>>> feito em java
>>>> Além disso, a última vez que eu tinha feito alguma coisa em perl foi
>>>> em 2006 quando o Fernando Correa da RIO-PM trabalhava em SP
>>>> e tinha me ajudado a fazer um front-end em perl-tk p/ aumentar e
>>>> diminuir o volume do audio no linux
>>>>
>>>> BTW, foi lá que eu também conheci o Blabos e depois, em alguns
>>>> encontros sociais, o Solli :P
>>>>
>>>>
>>>> See Ya!!!
>>>>
>>>> Geraldo Netto
>>>> Sapere Aude => Non dvcor, dvco
>>>> São Paulo, Brasil, -3gmt
>>>> site: http://exdev.sf.net/
>>>>
>>>> 2014-03-01 12:18 GMT-03:00 Daniel Vinciguerra <
>>>> dan.vinciguerra em gmail.com>:
>>>> > herman++
>>>> >
>>>> > Caiu em desuso após o PBP "definir" como um bom padrão nomes de sub
>>>> todo
>>>> > maiúsculo ou todo minusculo... mas o perlcritic só pega no nível de
>>>> > severidade --brutal
>>>> >
>>>> > (eu particularmente uso e gosto porque, IMHO, deixa muito mais fácil a
>>>> > leitura)
>>>> >
>>>> > []'s
>>>> >
>>>> >
>>>> >
>>>> > Daniel Vinciguerra
>>>> > Web Solutions Architect and Co-Owner at Bivee
>>>> > http://github.com/dvinciguerra
>>>> >
>>>> >
>>>> > 2014-02-28 21:28 GMT-03:00 Hernan Lopes <hernanlopes em gmail.com>:
>>>> >
>>>> >> nossa, um camel case!
>>>> >> CamelCase anda tão fora de moda que me deixa surpreso ao ver que
>>>> pessoas
>>>> >> ainda o preferem ao invés de under_line
>>>> >>
>>>> >>
>>>> >>
>>>> >> 2014-02-28 11:59 GMT-03:00 Geraldo Netto <geraldonetto em gmail.com>:
>>>> >>
>>>> >>> Bom Dia Pessoal!
>>>> >>>
>>>> >>> Consegui evoluir no código com a api do posix mesmo
>>>> >>> crio as datas com POSIX::strftime
>>>> >>> e calculo o horário de verão pegando a saida do comando cal no shell
>>>> >>>
>>>> >>> yep, eu sei que é feito, mas resolve o meu problema de um jeito
>>>> rápido...
>>>> >>> por hora, a idéia é só gerar o "okay" da gerencia p/ matar umas 4
>>>> >>> versões shell que fazem o mesmo trabalho, mas precisam de alguns
>>>> >>> parâmetros diferentes e alguma intervenção humana especificamente no
>>>> >>> período de horário de verão
>>>> >>>
>>>> >>> a minha dúvida é primária, suponho...
>>>> >>> mas eu não entendi o porque usar o shift
>>>> >>> se eu posso verificar com o defined() se o @_[<número>] está
>>>> definido?
>>>> >>>
>>>> >>> Aceito sugestões e Mais uma vez, Valeu mesmo pela força! :P
>>>> >>>
>>>> >>>
>>>> >>> BTW, código todo a seguir:
>>>> >>>
>>>> >>> #!/usr/bin/perl
>>>> >>>
>>>> >>> use strict;
>>>> >>> use warnings;
>>>> >>>
>>>> >>> use POSIX;
>>>> >>>
>>>> >>>
>>>> >>> # a inicia a data em 1900 entao, se for passado 95 => 1995
>>>> >>> sub calcularDeslocamentoAno {
>>>> >>>     die "ano invalido" unless defined(@_[0]) && return ($_[0] > 99 ?
>>>> >>> $_[0] - 1900 : $_[0]);
>>>> >>> }
>>>> >>>
>>>> >>> sub criarData {
>>>> >>>     die "parametros invalidos" unless (defined(@_[0]) &&
>>>> >>> defined(@_[1]) && defined(@_[2]));
>>>> >>>     #Usage: POSIX::strftime(fmt,             sec, min, hour, mday,
>>>> >>> mon, year, wday = -1, yday = -1, isdst = -1)
>>>> >>>     return POSIX::strftime("%Y,%m,%d", 0, 0, 0, @_[0], (@_[1] -1),
>>>> >>> &calcularDeslocamentoAno(@_[2]), 0, 0);
>>>> >>> }
>>>> >>>
>>>> >>> sub calcularDiaInicioHorarioVerao {
>>>> >>>     my $dia_inicio = `cal 10 2013 | tail -4 | head -1 | cut -d' '
>>>> -f7`;
>>>> >>> }
>>>> >>>
>>>> >>> sub calcularDiaFimHorarioVerao {
>>>> >>>     my $dia_fim = `cal 2 2014 | tail -4 | head -1 | cut -d' ' -f7`;
>>>> >>> }
>>>> >>>
>>>> >>> sub  trim {
>>>> >>>     my $s = shift;
>>>> >>>     $s =~ s/^\s+|\s+$//g;
>>>> >>>     return $s;
>>>> >>> }
>>>> >>>
>>>> >>> print &criarData(2, 5, 2014);
>>>> >>> print &trim($dia_inicio);
>>>> >>> print &trim($dia_fim);
>>>> >>>
>>>> >>> Geraldo Netto
>>>> >>> Sapere Aude => Non dvcor, dvco
>>>> >>> São Paulo, Brasil, -3gmt
>>>> >>> site: http://exdev.sf.net/
>>>> >>>
>>>> >>> 2014-02-26 23:41 GMT-03:00 Geraldo Netto <geraldonetto em gmail.com>:
>>>> >>> > Opa!
>>>> >>> >
>>>> >>> > Tudo okay Pessoal?
>>>> >>> >
>>>> >>> > Eu sou o Geraldo, um ghost reader da SPPM (e algumas outras PMs)
>>>> >>> > e eu ando trabalhando vagarosamente num projetinho
>>>> >>> > que eu dependo de verificação do horário de verão
>>>> >>> >
>>>> >>> > A idéia é separar o ano em 3 partes:
>>>> >>> >
>>>> >>> > fim do horário de verão (terceiro domingo de fevereiro)
>>>> >>> > fora do horário de verão
>>>> >>> > início do horário de verão (terceiro sábado de fevereiro)
>>>> >>> >
>>>> >>> > E baseado nisso, lançar um shell que vai receber o timezone, data
>>>> de
>>>> >>> > início e de fim
>>>> >>> > p/ fazer a coleta de dados pelo hp openview (comando ovpmbatch)
>>>> >>> >
>>>> >>> > Só que...
>>>> >>> > -eu tenho um servidor tru64 (sem suporte)
>>>> >>> > -rodando perl 5.8 (2002 pelo o que o version diz...)
>>>> >>> > -sem sudo/root/possibilidade de instalação de pacotes de terceiros
>>>> >>> > -<inclua-aqui-todas-as-limitações-que-vocês-imaginarem-de-infra>
>>>> >>> > -meu "core business" é análise de desempenho de software,
>>>> >>> > então o código não pode ser muito "perlish"
>>>> >>> > porque alguém pode precisar dar manutenção depois de mim
>>>> >>> >
>>>> >>> > Embora eu ainda não tenha código real (só comecei a brincar)
>>>> >>> > Eu estou pensando em ir com a api do posix, especificamente a
>>>> >>> > função/método strftime
>>>> >>> >
>>>> >>> > Eventualmente vocês teriam alguma sugestão?
>>>> >>> >
>>>> >>> >
>>>> >>> > Grande Abraço!
>>>> >>> >
>>>> >>> > Geraldo Netto
>>>> >>> > Sapere Aude => Non dvcor, dvco
>>>> >>> > São Paulo, Brasil, -3gmt
>>>> >>> > site: http://exdev.sf.net/
>>>> >>> =begin disclaimer
>>>> >>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> >>> =end disclaimer
>>>> >>
>>>> >>
>>>> >>
>>>> >> =begin disclaimer
>>>> >>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> >> =end disclaimer
>>>> >>
>>>> >
>>>> >
>>>> > =begin disclaimer
>>>> >    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>> >  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> > =end disclaimer
>>>> >
>>>> =begin disclaimer
>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>>
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://about.me/peczenyj
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140301/7f2863cf/attachment-0001.html>


More information about the SaoPaulo-pm mailing list