Sabendo se o ano e bissesto

6 respostas
J

como faco para saber se o ano e bissesto ?

6 Respostas

D

bom, se existe alguma funcao q informa se o ano eh bissexto eu não sei (se alguem souber tb ficaria grato…), mas da pra usar uma gambiarra…:
Segundo o calendário todo ano que for multiplo de 4 é um ano bissexto.
então eh so pegar o valor do ano e dividir por 4, se restar 0 eh pq eh…

eh uma coisa até meio “feia” de se fazer, mas na teoria funciona…

S

Para ser uma gambiarra que realmente funcione, não basta descobrir os múltiplos de 4. Tem que excluir destes múltiplos de 4 os múltiplos de 100 e acrescentar os múltiplos de 400!

Uma outra gambiarra, mais simples (?) é pegar o dia 1° de março do ano em questão e subtrair um para ver se dá 28 ou 29 de fevereiro. As classes Date, Calendar, fazem a conta certinha :wink:

E esta é somente se não for dever de casa ou trabalho de faculdade:

java.util.GregorianCalendar.isLeapYear(int ano)

(Foi seu Gregorio quem inventou tudo isso)

S

Primeiro: todos os múltiplos de 400 são também múltiplos de 4.
Segundo: excluir os múltiplos de 100? Por quê? 2000 é bisexto e é múltiplo de 100.

Então, o meio de saber se o ano é bisexto é como o DiegoDiSouza falou, dividindo-se por 4, mas discordo chamar isso de gambiarra. Se existir uma função que diga se é bisexto ou não, ela vai fazer exatamente essa divisão.

S

Concordo plenamente com o que você colocou, sem tirar nada do que coloquei! ’

Vejamos o que eu coloquei:

“não basta descobrir os múltiplos de 4. Tem que excluir destes múltiplos de 4 os múltiplos de 100 e acrescentar os múltiplos de 400”

por partes :
(não basta) “descobrir os múltiplos de 4”

simples não!

2100, 2096… 2004, 2000, 1996, 1992, 1988, …, 1904, 1900, 1896, …

todos múltiplos de 4, certo? (ensino fundamental!)

“Tem que excluir destes múltiplos de 4 os múltiplos de 100”

nos exemplos acima, excluimos 2100, 2000 e 1900, sobrando:

… 2004, 1996, 1992, 1988, …, 1904, 1896

continuando,

“e acrescentar os múltiplos de 400”

dos que tirei, 1900, 2000 e 2100, quais são múltiplos de 400? tan, tan, tan, taaannnn …
… e o que significa, em português, acrescentar?

Adiantando, ACRESCENTAMOS 2000 à lista, ficando:

… 2004, 2000, 1996, 1992, 1988, …, 1904, 1896

E o que aconteceu com os múltiplos de 4: 2100 e 1900?

Tente, por exemplo o seguinte método:

import java.util.*;
public class AnoBissextoALimpo
{
 static void ehBissexto(int ano)
 {
  	GregorianCalendar gc = new GregorianCalendar();
	System.out.println (ano + ": " + gc.isLeapYear(ano));
 }
 public static void main(String[] args)
 {
 	int ano[] = {1896, 1900, 1904, 1996, 2000, 2004, 2100};
 	for (int i = 0; i< ano.length; i++)
	  	ehBissexto(ano[i]);
 }
}

Java com estes métodos estranhos é complicado, mas o bom e velho português parece ser bem mais. :o(

E para os que tem dificuldade no português, dêem uma olhada no que a marinha dos gringos publica:

http://aa.usno.navy.mil/faq/docs/leap_years.html

Complementando, tentem passar 29/02/1900 com SimpleDateFormat para uma variável Date. Vocês terão uma surpresa, enquanto Bill Gates rola de rir!

… e cada um faz a gambiarra que bem entender… Afinal, quem liga pra qualidade …

spier

D

aff…

dessa eu não sabia(afinal 2000 coincidiu em ser bissexto q eu nem lembrava q tinha essas regrinhas…) :oops:
Mas assim a cada 400 anos teriam sido “engolidos” 3 dias…
Bom valew ai Spier pela explicação e pelo metodo…
Falow
[]'s

PS.: Quem diria que estaria discutindo astronomia no PJ??

S

Do jeito como você falou no primeiro post, não pareceu algo seqüencial. Por isso achei redundante acrescentar os múltiplos de 400.

Nunca soube disso, eu achava que de 4 em 4 anos tínhamos um ano bisexto.

Criado 16 de novembro de 2004
Ultima resposta 18 de nov. de 2004
Respostas 6
Participantes 4