Compruebe dos de Java La fecha no es la N posturas mismo día

I. Antecedentes

Este artículo describe la comparación de las dos java.util.Date objetos no son representativos de los N tipos de gestos en el mismo día.  

Presentado por primera vez API nativa de Java, e introducirá varias bibliotecas implementan esta función.

Traductor: Comparación de dos objetos en el mismo día en sí no es muy difícil, enfocándose a recordar cada uno para aprender más sobre otras librerías utilizadas, los requisitos funcionales relacionados con el futuro más tiempo se puede procesar más fácilmente a través de la biblioteca correspondiente.

 

Dos, Core Java

clase Date representa un momento determinado en el tiempo, con una precisión de milisegundos.

Con el fin de averiguar si dos Fecha objeto contiene el mismo día, tenemos que comprobar dos objetos año-mes-día son los mismos, descartando vez más granular.

2.1. Uso  LocalDate

El uso de Java nueva fecha-hora API 8, podemos utilizar el objeto LocalDate. Este objeto es inmutable, sin fecha indica el tiempo objetivo.

Echemos un vistazo a cómo se puede utilizar éstos para comprobar si dos objetos Date en el mismo día:

public static boolean isSameDay(Date date1, Date date2) {
    LocalDate localDate1 = date1.toInstant()
      .atZone(ZoneId.systemDefault())
      .toLocalDate();
    LocalDate localDate2 = date2.toInstant()
      .atZone(ZoneId.systemDefault())
      .toLocalDate();
    return localDate1.isEqual(localDate2);
}

En este ejemplo, vamos a utilizar el tiempo predeterminado zona dos objetos Date se convierten en LocalDate. Después de la conversión, sólo tenemos que utilizar el método para comprobar si los objetos IsEqual LocalDate por la igualdad.

Por lo tanto, el uso de este enfoque, vamos a ser capaces de determinar si dos objetos de fecha para el mismo día.

2.2. Uso SimpleDateFormat

Desde las primeras versiones de inicio de Java, hemos sido capaces de utilizar la clase Date SimpleDateFormat y objeto String representa una transición entre las formas. Tales incidentales uso de múltiples modos de la conversión.

En nuestro ejemplo, vamos a utilizar el modo "AAAAMMDD".

Usando este método, vamos a formatear fechas, lo convierten en un objeto String, a continuación, utilizar el estándar es igual método para comparar:

public static boolean isSameDay(Date date1, Date date2) {
    SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
    return fmt.format(date1).equals(fmt.format(date2));
}

2.3 Uso de Calendario

Calendario de clases proporciona un método para obtener un valor diferente de las unidades de tiempo de la fecha y la hora.

En primer lugar, tenemos que crear dos instancias de Calendario, Calendario objeto y establecer el tiempo de acuerdo a cada fecha.

Entonces, podemos consultar por separado y comparar año-mes-día propiedad para determinar si el objeto tiene la misma fecha Fecha:

public static boolean isSameDay(Date date1, Date date2) {
    Calendar calendar1 = Calendar.getInstance();
    calendar1.setTime(date1);
    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTime(date2);
    return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR)
      && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH)
      && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
}

3. biblioteca externa

Por el ejemplo anterior, pasamos por la vieja y la nueva API de Java comparación de dos objetos de Java es una fecha en el mismo día.

Aquí vamos a utilizar la biblioteca tripartito para conseguir la misma funcionalidad.

3.1 Utilización del paquete de Apache Commons Lang  DateUtils

DateUtils clase proporciona muchas horas de clase útil, lo utilizan para hacer frente a Calendario y fecha objetos muy fácilmente.

dependencia Maven:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

Obtener una palabra:

DateUtils.isSameDay(date1, date2);

 

3.2. Biblioteca Joda-Time

Joda-Time  ofrece unas potentes funciones de fecha y hora, que puede sustituir a la fecha y hora de Java clases relacionadas.

dependencia Maven

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10</version>
</dependency>

uso:

public static boolean isSameDay(Date date1, Date date2) {
    org.joda.time.LocalDate localDate1 = new org.joda.time.LocalDate(date1);
    org.joda.time.LocalDate localDate2 = new org.joda.time.LocalDate(date2);
    return localDate1.equals(localDate2);
}

3.3. Date4J biblioteca

Date4J  también proporciona una API mucho tiempo relacionada.

dependencia Maven

<dependency>
    <groupId>com.darwinsys</groupId>
    <artifactId>hirondelle-date4j</artifactId>
    <version>1.5.1</version>
</dependency>

Podemos  java.util.Date en DateTime objeto y luego usar isSameDayAs para comparar:

public static boolean isSameDay(Date date1, Date date2) {
    DateTime dateObject1 = DateTime.forInstant(date1.getTime(), TimeZone.getDefault());
    DateTime dateObject2 = DateTime.forInstant(date2.getTime(), TimeZone.getDefault());
    return dateObject1.isSameDayAs(dateObject2);
}

 

4 Resumen

En este artículo se describe si Java Fecha objetos para comparar dos formas diferentes en el mismo día.

Espero que comprendan las herramientas comunes de la época, con el tiempo bien conocido de las herramientas tripartitas en caso de necesidades similares para simplificar el código.

 

 

Publicados 379 artículos originales · ganado elogios 862 · Vistas 1,32 millones +

Supongo que te gusta

Origin blog.csdn.net/w605283073/article/details/103335373
Recomendado
Clasificación