como faco para saber se o ano e bissesto ?
Sabendo se o ano e bissesto
6 Respostas
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…
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 
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)
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.
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
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??
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.