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 " .