“Conocimiento Programación>Programación Java

Cómo calcular Fecha Diferencia en Java

2012/1/21
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 " .

Programación Java
Cómo declarar un constructor en Java
Cadena de doble conversión en Java
Acerca de los atributos de un centro de guardería
Cómo dar formato a una variable con un decimal en Java
Cómo convertir P12 con keytool
¿Cómo paso a través de una aplicación Grails Con NetBeans
El uso de Java genérico para devolver Tipo
Cómo agregar un Desprotegido Código Android a un proyecto Eclipse
Conocimiento de la computadora © http://www.ordenador.online