Get Your Right Cálculo ano bissexto

19 mar 2008

No último artigo , falei sobre a padronização de formatos de data. Em uma nota relacionada, descobri que muitas pessoas não sabem como calcular os anos bissextos. É trivial para obtê-lo direito, mas mesmo programadores experientes estragar tudo. Então, como saber se um ano é ano bissexto ou não?

Considere o AAAA ano. As regras são as seguintes:

  • Se AAAA é divisível por 400, é um ano bissexto
  • Se AAAA é divisível por 100, não é um ano bissexto
  • Se YYYY é divisível por 4, é um ano bissexto

Isso pode ser expresso em C, C + +, Javascript ou Java de código como:

isLeap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)

Algumas pessoas não sabem sobre a regra de 100 e 400. Pergunte aos seus colegas para saber quantos deles conhecem essas regras e dizer-lhes as regras para que os programas que escrevem vai funcionar mesmo depois de 4, 100 ou 400 anos. Como sabemos, o software legado maintainig é uma grande dor de cabeça para empresas de software. Há uma possibilidade que o software que você escreve pode sobreviver 400 anos.

3 respostas até agora

  • Lyman disse:

    Você pode querer corrigir isto. A última vez que verifiquei, uma declaração como:

    4% no ano;

    irá retornar 0, 1, 2 ou 3. Isto significa que três em cada quatro anos é um leapyear em seu código.

    O que você provavelmente quis dizer foi:

    isLeap = (ano% 4 == 0) ...

    o "100%" e '% 400' expressões são incorrectas, da mesma forma também.

    Graças.

    Lyman

  • WhatWhat diz:

    "Há uma chance de que o software que você escreve pode sobreviver 400 anos. ...". Sim, é verdade ... .. mas wtf que eu me importo? sua 400!! anos mais tarde!!

  • Niyaz PK diz:

    Lyman Graças. Corrigida.

    WhatWhat,
    O que nós apreciamos agora em nossa vida são as escolhas feitas por pessoas de centenas de anos atrás.

Deixe uma resposta