Cálculo de las diferencias entre las dos fechas en Java 6.0 y versiones anteriores pueden ser engañosamente difícil debido a la necesidad de acomodar los años bisiestos , segundos bisiestos , los tiempos de ahorro de luz del día y otros ajustes realizados periódicamente a la agenda de la mayoría de los países. Esta guía le ofrece dos soluciones , una que no se debe utilizar en situaciones en horario de verano o los años bisiestos pueden causar problemas graves y una opción más sofisticada basada en la biblioteca JSR -310 . Esta biblioteca está programado para ser parte de la API de Java 7.0 cuando se lance a finales de 2010 . Sin embargo, puede ser descargado para su uso ahora . Cosas que necesitará de computadora
Java JSR -310 (opcional )
Mostrar más instrucciones
Uso de Java 6.0 Herramientas
1
Crear un nueva clase con el nombre de " DateDifferencer " y el nombre de archivo " DateDifferencer.java . " Dale el siguiente esqueleto :
/*** Esta clase proporcionará dos métodos para encontrar las diferencias entre las fechas: * - Un método nativo que no tiene en cuenta los años bisiestos y otras rarezas de fecha * , pero que es compatible con la última versión de Java , a principios de 2010 * - . . Una versión más sofisticada que utiliza la biblioteca externa JSR -310 *, que se incluirá en Java 7 , que se publicará a finales de 2010 ** @ author Kevin Walker * Clase /public DateDifferencer {
}
Todo lo demás va a ir dentro de esta estructura de clases.
2
Calcular el número de milisegundos en un día y guárdelo en una constante para su uso posterior. Esto es necesario porque Java versiones 6.0 y anteriores comprenden el tiempo de forma nativa en milisegundos o nanosegundos .
/*** El número de milisegundos de un día es igual a 1000 milisegundos por segundo * 60 segundos por minuto * 60 minutos por horas * 24 horas al día * /foto
public double MILLISECONDS_IN_DAY static final = 1000 * 60 * 60 * 24 ;
3
crear el método " findDifference " . Asegúrese de que el comentario Javadoc toma nota de la debilidad en el procedimiento para cualquier otra persona que decida utilizar.
/*** Esta clase utiliza un método sencillo para calcular la diferencia entre dos fechas. * Sin embargo , no es impecable . Las imprecisiones pueden ser el resultado de los años bisiestos . ** @ Return el número de días de diferencia entre las dos fechas sin corrección de los años bisiestos o de horario de verano el tiempo cambia . * /Double findDifference public static ( Fecha d1 , d2 Fecha ) {
< p> doble diff = Math.abs ( d2.getTime () - d1.getTime ());
dobles día = diff /MILLISECONDS_IN_DAY ;
días de retorno
;
}
Esto funciona mediante la búsqueda de la diferencia entre las dos fechas , en términos de milisegundos . A continuación, se divide por el número de milisegundos en un día (que que calculó en el paso 2 ) .
Uso JSR -310
4
Coloque el JSR - 310 Tiempo archivo " jar" en el mismo directorio que el resto de su programa.
5
Añadir unas importaciones más a la clase DateDifferencer para que pueda tener acceso a la biblioteca de JSR 310 .
< p > javax.time.Duration importación , importación javax.time.period.Period ; .
6
Añadir un nuevo método a la clase DateDifferencer
/*** @ return string que describe la diferencia entre las dos fechas * /static String findDifferenceWithJSR pública ( fecha de inicio , fecha de finalización ) { tiempo = duración Duration.durationBetween ( inicio, fin ) . Período diff = Period.nanos ( duration.toNanos ()); volver nueva diff.toString () ;}
Esto crea un objeto de "Duración" , que mantiene la diferencia entre las dos fechas. Podrías parar allí y regresar comando " toString " de la Duración . Sin embargo , esto proporciona la respuesta en términos de segundo , que no es legible por humanos . Por lo tanto, a continuación, crea un objeto "período" y utiliza su mando " toString " .