[firebase-br] Dias Uteis ...

Gleyber cmesquita em cmsolucoes.com.br
Ter Ago 29 18:06:01 -03 2006


Valeu Moacir.

[ ]'s
Gleyber

----- Original Message ----- 
From: "Prisma Sistemas - Moacir" <prismars em prismars.com.br>
To: "Gleyber" <cmesquita em cmsolucoes.com.br>; "FireBase" 
<lista em firebase.com.br>
Sent: Tuesday, August 29, 2006 5:28 PM
Subject: Re: [firebase-br] Dias Uteis ...


> Gleyber, Otto e todos os interessados:
>
> Ai esta uma função em Delphi que uso para feriados fixos.
>
> -------------------------------------------------------------------
> Function Ve_Feriado(dData : TDateTime=0) : Boolean;
> var
>  nMes : Integer;
>  y,m,d:Word;
>  G,I,J,C,H,L: Integer;
>  E:TDateTime;
>  dSexta : TDateTime;
>  dCarnaval : TDateTime;
>  ano : integer;
> Const
>   FERIADOSFIXOS  : Array [1..12] of String =('01~',       // Jan
>                                              '',          // Fev
>                                              '',          // Mar
>                                              '21~',       // Abr
>                                              '01~',       // Mai
>                                              '',          // Jun
>                                              '',          // Jul
>                                              '',          // Ago
>                                              '07~',       // Set
>                                              '12~',       // Out
>                                              '02~15~',    // Nov
>                                              '25~');      // Dez
> Begin
>  If dData=0 then
>     Result:=False
>  else
>  Begin
>     Try
>       nMes  :=StrToInt(FormatDateTime('mm',dData));
>     except
>       nMes  :=0;
>     end;
>     If (nMes<1) or (nMes>12) then
>        Result:=False
>     else
>        Result:=Pos(FormatDateTime('dd',dData),FERIADOSFIXOS[nMes] )<>0;
>  end;
> //---- Calcula o Feriado de Carnaval e Sexta-Feira Santa
>  DecodeDate(dData, Y, M, D);
>  ano := y;
>  G := ano mod 19;
>  C := ano div 100;
>  H := (C-C div 4-(8*C+13) div 25 + 19*G+15)mod 30;
>  I := H-(H div 28)*(1-(H div 28)*(29 div(H+1))*((21-G)div 11));
>  J := (ano + ano div 4 +I+2-C+C div 4) mod 7;
>  L := I-J;
>  m := 3+(L+40) div 44;
>  d := L+28-31*(m div 4);
>  //y := ano;
>  E := EncodeDate(y,m,d);
>  While DayOfWeek(E)>1 do
>    E := E+1;
>  //--- Sexta-feira Santa
>  dSexta := E - 2;
>  //--- Carnaval
>  dCarnaval := E - 47;
>  If (dData = dSexta) Or (dData = dCarnaval) then
>     Result := True;
> End;
> -------------------------------------------------------------------
>
> Espero que ajude.
>
> [ ]´s
> Moacir
>
>
> Gleyber escreveu:
>> Otto, só vc mesmo...
>>
>> Vou aproveitar a dica e fazer um componente para calcular sozinho para 
>> mim.
>>
>> [ ]'s
>> Gleyber
>>
>>
>> ----- Original Message ----- 
>> From: "Otto Fuchshuber" <ottofuch em terra.com.br>
>> To: <renan em safetech.inf.br>; "FireBase" <lista em firebase.com.br>
>> Sent: Tuesday, August 29, 2006 1:37 PM
>> Subject: Re: [firebase-br] Dias Uteis ...
>>
>>
>> Para calcular o dia da pásca em cada ano existe a seguinte rotina:
>>
>> Fonte: Revista Scientific American, Marco 2001, pagina 73
>> Escolha um ano do calendario Gregoriano e chame-o de x. Para determinar
>> a data da Pascoa execute os seguintes 10 calculos:
>>
>>   1. Dividir x por 19 para obter um quociente (que vamos ignorar) e um 
>> resto
>>      A. Esta e' a posicao do ano no ciclo lunar de 19 anos (A+1 e' o 
>> numero
>>      ouro do ano)
>>   2. Dividir x por 100 para obter um quociente B e um resto C
>>   3. Dividr B por 4 para obter um quociente D e um resto E
>>   4. Dividr 8B + 13 por 25 para obter um quociente G e um resto que vamos
>> ignorar
>>   5. Dividir 19A + B - D - G + 15 por 30 para obter um quociente (que 
>> vamos
>>      ignorar) e um resto H (o Epacs do ano e' 23-H quando H for menor do 
>> que
>>      24 e 53-H de outro modo)
>>   6. Dividir A + 11H por 319 para obter um quociente M e um resto (que 
>> vamos
>>      ignorar)
>>   7. Dividir C por 4 para obter um quociente J e um resto K
>>   8. Dividir 2E + 2J - K - H + M + 32 por 7 para obter um quociente (que
>> vamos
>>      ignorar) e um resto L
>>   9. Dividir H - M + L + 90 por 25 para obter um quociente N e um resto 
>> (que
>>      vamos ignorar)
>>  10. Dividir H - M + L + N + 19 por 32 para obter um quociente (que vamos
>>      ignorar e um resto P
>>
>>  O domingo de Pascoa e' o P-esimo dia do N-esimo mes (N pode ser ou 3 
>> para
>>  marco, ou 4 para abril). A letra dominical pode ser achada em 
>> dividindo-se
>>  2E + 2J - K por 7 e tomando-se o resto (um resto igual a 0 e' a letra A,
>>  1 e' equivalente a B, e assim por diante).
>>
>> Experimentando este metodo para o ano x = 2001 obtemos (1)A=6; 
>> (2)B=20,C=1
>> (3)D=5,E=0;(4)G=6;(5)H=18;(6)M=7;(7)J=0,K=1;(8)L=6;(9)N=4;(10)P=15
>>
>> Em 2001 a páscoa caiu em 15/04/2001.
>> Em 2007 será no dia 08/04/2001
>> Em 2010 será no dia 04/04/2010
>> No ano 34 DC caiu em 26/03/2006
>> Antes disto não havia páscoa.
>>
>> Segundo a Wikipedia,
>> http://pt.wikipedia.org/wiki/P%C3%A1scoa
>> "A Páscoa é celebrada no primeiro Domingo após a primeira Lua Cheia que
>> ocorre depois do equinócio da Primavera"
>> Lá existem outros algoritmos de cálculo, talvez menos exatos do que o
>> apresentado na Cientific American
>>
>> Lá vem a turma da cultura ... {:-)
>> Se quiser, lhe mando em PVT um pequeno programa em Visual Basic 6 que 
>> efetua
>> todos os cálculos.
>>
>> Otto
>>
>> ----- Original Message ----- 
>> From: "Renan de Oliveira" <renan em safetech.inf.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Tuesday, August 29, 2006 10:51 AM
>> Subject: Re: [firebase-br] Dias Uteis ...
>>
>>
>> Sugiro que voce tenha uma tabela com os cadastros de feriados, do 
>> contrário
>> sera complicado, pois apesar de normalmente os feriados terem dias fixos, 
>> a
>> empresa pode optar por feriadões, férias, etc. depois tu monta um sql que 
>> te
>> tras os dias que nao forem sabado e domingo, e faz um join com essa 
>> tabela
>> pra verificar se mesmo nao sendo sabado nem domingo é feriado ou nao
>>
>>
>> Renan de Oliveira
>> Safetech Informática
>> (51) 3529-3870
>> ----- Original Message ----- 
>> From: "Firebird" <rubens.rodrigues em abrevo.com.br>
>> To: <lista em firebase.com.br>
>> Sent: Tuesday, August 29, 2006 10:33 AM
>> Subject: [firebase-br] Dias Uteis ...
>>
>>
>> Prezados Colegas,
>>
>> É possivel via SQL eu conseguir a qtde de dias úteis num determinado mês?
>>
>> Obrigado
>>
>> Rubens
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>> Esta mensagem foi verificada pelo E-mail Protegido Terra.
>> Scan engine: McAfee VirusScan / Atualizado em 28/08/2006 / Versão:
>> 4.4.00/4839
>> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>>
>>
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço 
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço 
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
> 






Mais detalhes sobre a lista de discussão lista