Tecnología

Inicio

Cómo calcular Fecha Diferencia en Java

Cómo calcular Fecha Diferencia en Java


El cálculo de las diferencias entre dos fechas en Java 6.0 y versiones anteriores puede ser engañosamente difícil debido a la necesidad de acomodar los años bisiestos, saltos de segundos, horas el horario de verano y otros ajustes realizados regularmente para el calendario en la mayoría de los países. Este tutorial ofrece dos soluciones, una que no se debe utilizar en situaciones en el horario de verano o años bisiestos pueden causar problemas graves y una opción más sofisticado basado 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.

Instrucciones

Uso de Java 6.0 Herramientas

1 Crear una nueva clase con el nombre \ "DateDifferencer \" y el nombre del archivo \ póngale el siguiente esqueleto "DateDifferencer.java \.":

/ **

Esta clase proporciona dos métodos para encontrar las diferencias entre las fechas: Un método nativo que no tiene en cuenta los años bisiestos y otra fecha odditiesbut que es compatible con la última versión de Java, a principios de 2010. versión más sofisticada que utiliza el externo biblioteca de JSR-310, el cual será incluido en Java 7, que será lanzado a finales de 2010.


@author Kevin Walker
* /
DateDifferencer public class {

}

Todo lo demás se irá dentro de esta clase de esqueleto.

2 Calcular el número de milisegundos en un día y almacenarlo en una constante para su uso posterior. Esto es necesario porque Java 6.0 y versiones anteriores comprender el tiempo de forma nativa en milisegundos o nanosegundos.

/ **

El número de milisegundos en un día es igual a 1000 milisegundos por second60 segundos por minute60 minutos por hora de 24 horas por día
* /

MILLISECONDS_IN_DAY estática public final doble = 1000

60 60 * 24;

3 Crear el método \ "findDifference \". Asegúrese de que el comentario Javadoc toma nota de la debilidad en el método para cualquier otra persona que opta por utilizarlo.

/ **

Esta clase utiliza un método simple para calcular la diferencia entre dos dates.However, no es impecable. Las imprecisiones pueden ser el resultado de los años bisiestos.
* @ Devolverá el número de días de diferencia entre las dos fechas sin corrección de los años bisiestos o cambios de hora.
* /
findDifference pública estática doble (Fecha d1, d2 Fecha) {

doble diff = Math.abs (d2.getTime () - d1.getTime ())
IR

días dobles = dif / MILLISECONDS_IN_DAY
IR

días de retorno
IR

}

Esto funciona mediante la búsqueda de la diferencia entre las dos fechas en términos de milisegundos. Luego se divide por el número de milisegundos en un día (que se calcula en el paso 2).

Uso de JSR-310

4 Coloque el archivo de JSR-310 Tiempo \ "tarro \" en el mismo directorio que el resto de su programa.

5 Añadir un poco más de las importaciones a su clase DateDifferencer para que pueda tener acceso a la biblioteca de JSR 310.

importación javax.time.Duration
IR
javax.time.period.Period importación;

6 Añadir un nuevo método para la clase DateDifferencer.

/ **

@return una cadena que describe la diferencia entre las dos fechas.
* /
Public static String findDifferenceWithJSR (Fecha de inicio, Fecha de finalización) {
Duración Duración = Duration.durationBetween (inicio, final)
IR
Período diff = Period.nanos (duration.toNanos ())
IR
volver nueva diff.toString ()
IR
}

Esto crea un objeto \ "Duración \", que mantiene la diferencia entre las dos fechas. Se podía parar allí y volver orden \ "toString \" de la Duración. Sin embargo, esto proporciona la respuesta en términos de segundos, que no es legible. Por lo tanto, a continuación, crea un "Período de \" \ objeto y utiliza su orden \ "toString \".