Testar se o Ano é Bisesto

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Testar se o Ano é Bisesto

Mensagem por Ricardo Sales Ribeiro »

Olá
Boa Noite galera!

Estou precisando de uma rotina q me diga se um determinado ano é bisesto ou não. procurei na parte de rotinas fontes mas não encontrei.
Desde já agradeço a colaboração.


Atenciosamente.
Ricardo Sales Ribeiro
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Re: Testar se o Ano é Bisesto

Mensagem por Vander »

Olá Ricardo;

Veja se ajuda:


viewtopic.php?f=1&t=7649&p=42045&hilit=bissexto#p42045

http://pt.wikipedia.org/wiki/Ano_bissexto


Vander
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Testar se o Ano é Bisesto

Mensagem por Toledo »

Veja também a rotina abaixo, que está no site do nosso amigo Toya:

http://www.toyanet.com.br/arquivos/anobis.zip

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Testar se o Ano é Bisesto

Mensagem por alxsts »

Olá!

Sem a intenção de menosprezar as soluções propostas nos demais tópicos, creio que a solução mais correta e elegante relacionada ao assunto do tópico é aquela que veio junto aos exemplos do próprio Clipper 5.
Trata-se da função DateIsLeap().
Numa instalação padrão do Clipper 5, pode ser encontrada em C:\Clipper5\Source\Sample\Date.Prg.

Código: Selecionar todos

/***
*
*  DateIsLeap( <dDate> ) --> lLeap
*
*  Determine if the year of a supplied date is a leap year
*
*/
FUNCTION DateIsleap( dDate )
   
   LOCAL nYear := YEAR( dDate )

   RETURN (( nYear % 4 ) == 0 )    .AND. ;
          ((( nYear % 100 ) != 0 ) .OR.  ;
          (( nYear % 400 ) == 0)   )
A função retorna apenas se o ano da data fornecida é bissexto ou não. Para adição e subtração de meses, claro que a Nanfor tem ótimos recursos.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Re: Testar se o Ano é Bisesto

Mensagem por filizola »

bixexto=if(year(date())%4=0,.t.,.f.)
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Testar se o Ano é Bisesto

Mensagem por Maligno »

Não. A regra não é essa. Ela serve para a maior parte dos anos, mas não para todos. A regra correta você pode ver na Wikipedia, conforme link fornecido pelo Vander. Ou então leia o código publicado pelo alxsts, que está correto. Mas se for usar o seu, como eu disse, até serve para os próximos anos.

bixexto = (year(date())%4=0) // fatorado
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder