Calculando a diferença entre duas datas em Java 6.0 e anteriores pode ser enganosamente difícil por causa da necessidade de acomodar os anos bissextos , salto segundos , a luz do dia e outras vezes os ajustes feitos regularmente para o calendário na maioria dos países a economizar. Este tutorial fornece duas soluções , que não deve ser usado em situações onde DST ou anos bissextos pode causar problemas graves e uma opção mais sofisticada com base na biblioteca JSR - 310 . Esta biblioteca está programado para ser parte do Java 7.0 API , quando for lançado no final de 2010 . No entanto, ele pode ser baixado para uso agora. Coisas que você precisa 
 Computer Fotografia de Java 
 JSR -310 (opcional) 
 Mostrar Mais instruções 
 usando Java 6.0 Ferramentas 
 1 
 Criar um nova classe com o nome de " DateDifferencer " eo nome do arquivo " DateDifferencer.java ". Dê-lhe o seguinte esqueleto : 
 
 /*** Esta classe irá fornecer dois métodos para encontrar as diferenças entre as datas : * - Um método nativo que não leva em conta os anos bissextos e outras esquisitices data *, mas que seja compatível com a última versão do Java , a partir de início de 2010 * - . . Uma versão mais sofisticada que utiliza a biblioteca externa JSR- 310, * que será incluído no Java 7 , que deverá ser lançado no final de 2010 ** @ author Kevin Walker * /public class DateDifferencer { 
 
 } 
 
 Tudo o resto vai dentro desse esqueleto de classe. 
 2 
 Calcule o número de milissegundos em um dia e armazená-lo em uma constante para uso posterior . Isso é necessário porque o Java 6.0 e versões anteriores entender o tempo de forma nativa em milissegundos ou nanossegundos. 
 
 /*** O número de milissegundos em um dia é igual a 1000 milissegundos por segundo * 60 segundos por minuto * 60 minutos por hora * 24 horas por dia * /Tablet 
 MILLISECONDS_IN_DAY double static final public = 1000 * 60 * 60 * 24 ; 
 3 
 Criar o método " findDifference " . Certifique-se de que o comentário Javadoc observa a fraqueza no método para qualquer outra pessoa que opta por usá-lo. 
 
 /*** Essa classe usa um método simples para calcular a diferença entre duas datas. * No entanto , não é impecável. Imprecisões podem resultar por causa de anos bissextos. ** @ Return o número de dias de diferença entre as duas datas , sem correção para os anos bissextos ou alterações de horário de poupança. * /Public static double findDifference (Data d1 , Data d2) { 
 
 duplo diff = Math.abs ( d2.getTime () - d1.getTime ()); 
 
 dias duplas = dif /MILLISECONDS_IN_DAY ; 
 
 retornar dias; 
 
 } 
 
 Isso funciona por encontrar a diferença entre as duas datas , em termos de milissegundos. Em seguida, ele divide isso pelo número de milissegundos em um dia (que você calculado na Etapa 2). 
 Usando JSR -310 
 4 
 Coloque o Tempo JSR -310 arquivo " jar" dentro do mesmo diretório que o resto do seu programa. 
 5 
 Adicione mais algumas importações para sua classe DateDifferencer para que possa ter acesso à biblioteca JSR 310. 
 
 javax.time.Duration importação; javax.time.period.Period importação; 
 6 
 Adicione um novo método para a sua classe DateDifferencer 
 
 /*** @ return uma string. . descrevendo a diferença entre as duas datas * /public static string findDifferenceWithJSR (Data de início, fim Data ) { duração Duração = Duration.durationBetween ( início, fim) ; Período diff = Period.nanos ( duration.toNanos ()); novo retorno diff.toString (); } 
 
 Isso cria um objeto "Duração" , que detém a diferença entre as duas datas. Você poderia parar por aqui e voltar comando " toString " da Duração . No entanto, este fornece a resposta em termos de segundos, o que não é legível. Então, em seguida, cria um objeto "Período " e usa o seu comando " toString " .