[SP-pm] Horário

Solli Honorio shonorio at gmail.com
Tue Nov 3 07:54:59 PST 2009


2009/11/3 Thomas Britis <thomas em tcnet.com.br>

> Oi Solli,
>
>        Obrigado pela resposta.
>
>
>  Não ficou claro para mim uma coisa :
>> * você quer iniciar um programa em algum momento;
>> * ou você tem uma rotina que será executada durante o dia todo, mas tem
>> alguma parte que será executada apenas num dado momento.
>>
>
>        Sim, minha necessidade é a segunda opção. A rotina é executada
> diversas vezes por dia, porém, só deverá executar uma opção especifica por
> um prazo de tempo. O grande problema é que esse prazo de tempo é variável,
> inserida pelo usuário.
>
>
>
>> Se o teu problema for a segunda opção, eu recomendo tempo em epoch, como
>> assim ? desta maneira :
>>
>> <code[1]>
>> $hora_permitido_inicio = HTTP::Date::str2time('2009-11-03 03:00:00
>> -03:00');
>> $hora_permitido_final  = HTTP::Date::str2time('2009-11-03 05:00:00
>> -03:00');
>>
>
>        Interessante. Meu único problema vai ser verificar se o prazo final
> é hoje ou amanhã. Mas, isso é simples.
>
>        Eu quebrei a cabeça pensando numa forma de fazer a conferência sem
> ter que levar o dia em consideração (por conta dos períodos que começam
> hoje, porém só terminam amanhã), mas acho que isso deve ser levado em conta.
>

Thomas, na verdade para a computador isto não interessa. O que eu estou
fazendo no código é só gerando epoch time, e comparando isto depois. Mas
você pode simplesmente fazer assim :

<code>
$hora_permitido_inicio = HTTP::Date::str2time('2009-11-03 03:00:00 -03:00');
$hora_permitido_final  = $hora_permitido_inicio + (8 * 3_600);
<code>

... isto significa que estou adicionando 8 horas no meu horário inicial, ou
seja, estou trabalhando com valores relativos. Então se vc já sabe o horário
inicial por outro meio, é só fazer o que eu fiz na segunda linha.

Outra estratégia seria utilizar alguma operação de bitwise (ou de mod, ou de
divisão) para você encontrar um determinado padrão que você deseja (
http://mail.pm.org/pipermail/saopaulo-pm/2009/006846.html). Como o epoch[1]
hoje é representado por inteiro de 32 bits, acredito que seja possível
descobrir através de um bitwise se é 23:00 ou 11:00, independente da data,
além é claro de optar por um módulo que faça isto, tipo do Date::Calc.

Não sei dizer a melhor alternativa sem conhecer todo o problema.

Abraços,

Solli M. Honório
[1] o epoch tem o bug do 2038, se tiver curiosidade:
http://en.wikipedia.org/wiki/Year_2038_problem




>        Muito obrigado a você e todos que responderam.
>
>        Abraços.
>
> --
> Thomas Storino Britis
> TCNet Informatica e Telecomunicacoes LTDA
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>


-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20091103/3866d8f6/attachment.html>


More information about the SaoPaulo-pm mailing list