Shopping Hospedagem Fórum Contato
     
   O portal do desenvolvedor ASP Florianópolis-SC, Sábado - 20 de Janeiro de 2018  
Busca

Menu do site
Efetuar Login
Usuário:

Senha:

 Esqueceu a senha?
Login automático

 Cadastre-se
Capturando o último dia do mês
Avaliações: 15   -   Minha nota: Média Geral: 14  

Muitos acham que basta saber se o ano é múltiplo de 4 para ser bissexto, mas isso não é verdade. Nem todos os anos divisíveis por 4 são bissextos

Os astrônomos do século XVII já sabiam: um ano tem 365,2422 dias. Não são 365, coisa que todo mundo já sabe, e também não são 365,25, como nos ensinaram na escola primária.

Para o papa Gregório II, 0,2422 é quase 0,25. Então, ao introduzir o calendário gregoriano, estabeleceu que a cada 4 anos o ano se acrescenta de um dia, passando a ter 366 dias (por isso o nome bissexto: 2 algarismos "6" seguidos).

Mas ele já sabia que havia uma diferença de 0.0078. Então, após 100 anos na contagem daquele novo calendário ia ficar sobrando "quase" 1 dia.
Então o próprio papa, em seu decreto, estabeleceu que os anos múltiplos de 100 não seriam bissextos, apesar de serem, também, múltiplos de 4.

Fim da história? Não. Mesmo com tudo isso, ainda ficava um resíduo de 0.0022, o que ao final de 400 anos, nos levaria a quase situação do ano bissexto. Portanto, estabeleceu-se que os anos múltiplos de 400 sejam bissextos, apesar de também serem divisíveis por 100.

Resta, assim, a diferença de 0.0003, o que faz com que, teoricamente, o ano 30.000 não seja bissexto, apesar de divisível por 400.

O fato é que muitos programadores da década de 80 não estavam informados de que os anos múltiplos de 100 não são bissextos, o que, de certa forma a completa ignorância evitou o problema. Se eles achassem que todo múltiplo de 100 não fosse bissexto, o ano 2000 não seria considerado bissexto, quando na verdade é, pois é múltiplo de 400.

Outros programadores mais dados ao diletantismo ouviram dizer que os anos centenários não são bissextos, sem atinarem para o fato que os quadri-centenários o são. Assim, geraram um problema por meia ignorância.
Moral da história: se quiser acertar, ou aprenda tudo sobre o problema ou não queira se inteirar de nada. Saber as coisas pela metade só piora a situação... como o caso dos programadores que sabiam a história dos anos bissextos pela a metade.

Desenvolvi uma função para capturar corretamente o ultimo dia do mês, segue abaixo:

Function QuantosDiasTemOMes(Mes,Ano)
  Select Case Mes
    Case 1,3,5,7,8,10,12: QuantosDiasTemOMes = 31
    Case 4,6,9,11: QuantosDiasTemOMes = 30
    Case Else
      If Ano Mod 4 = 0 And (Ano Mod 100 <> 0 Or Ano Mod 400 = 0) Then
        QuantosDiasTemOMes = 29
      Else
        QuantosDiasTemOMes = 28
      End If
  End Select
End Function

Para utilizar esta funcao, basta usar:

Response.Write QuantosDiasTemOMes(2,2005)



Um grande abraço!

Marcelo Coelho - MCO2
www.mco2.com.br






SuperASP do Brasil Ltda

03.066.522/0001-84
Av. Rio Branco 433 - Centro - Florianopolis - SC
Contato

© 2001/2008 - Superasp do Brasil Ltda. Todos os direitos reservados