Página 1 de 1

Testar se o Ano é Bisesto

Enviado: 15 Dez 2009 19:07
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

Re: Testar se o Ano é Bisesto

Enviado: 15 Dez 2009 19:46
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

Re: Testar se o Ano é Bisesto

Enviado: 15 Dez 2009 19:50
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,

Re: Testar se o Ano é Bisesto

Enviado: 16 Dez 2009 10:54
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.

Re: Testar se o Ano é Bisesto

Enviado: 17 Dez 2009 10:20
por filizola
bixexto=if(year(date())%4=0,.t.,.f.)

Re: Testar se o Ano é Bisesto

Enviado: 17 Dez 2009 13:47
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