Vérifiez deux Java date n'est pas les postures N jour même

I. Contexte

Cet article décrit la comparaison des deux java.util.Date objets ne sont pas représentatifs des types N de gestes sur le même jour.  

D'abord présenté Java API native, et introduira plusieurs bibliothèques à mettre en œuvre cette fonction.

Traducteur: Comparaison de deux objets le même jour lui-même est pas très difficile, en se concentrant rappeler à chacun d'en apprendre davantage sur les autres bibliothèques utilisées, les exigences fonctionnelles liées à l'avenir plus de temps peut être plus facilement traitée par la bibliothèque concernée.

 

Deux, Core Java

Date classe représentant en temps, un instant particulier avec une précision milliseconde.

Pour savoir si deux objets Date contient le même jour, nous devons vérifier deux objets Année-mois-jour sont les mêmes, le temps de jeter plus granulaire.

2.1. Utilisation  LocalDate

Utilisation de la Java nouvelle API Date-Time 8, nous pouvons utiliser l'objet LocalDate. Cet objet est immuable, aucune date indique l'heure cible.

look Let comment vous pouvez utiliser pour vérifier si deux objets Date de le même jour:

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);
}

Dans cet exemple, nous utiliserons le temps par défaut zone deux objets de date sont convertis en LocalDate. Après la conversion, nous avons seulement besoin d'utiliser la méthode pour vérifier si isEqual LocalDate objets pour l'égalité.

Ainsi, en utilisant cette approche, nous serons en mesure de déterminer si deux objets date pour le même jour.

2.2. Utilisation SimpleDateFormat

Depuis les premières versions de Java début, nous avons été en mesure d'utiliser la classe SimpleDateFormat Date et objet chaîne représente une transition entre les formes. Une telle utilisation de multiples accessoires modes de conversion.

Dans notre exemple, nous allons utiliser le mode « aaaaMMjj ».

En utilisant cette méthode, nous formate les dates, le convertir en un objet String, puis utilisez la norme égale méthode pour comparer:

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

2.3 Utilisation Calendrier

classe Calendar fournit une méthode d'obtention d'une valeur différente des unités de temps de la date et l'heure.

Tout d'abord, nous devons créer deux instances de calendrier, objet Calendrier et régler l'heure en fonction de chaque jour.

Ensuite, nous pouvons interroger séparément et comparer propriété Année mois jour pour déterminer si l'objet a la même date Date:

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. Bibliothèque externe

Par l'exemple ci-dessus, nous avons passé l'ancienne et la nouvelle comparaison API Java de deux objets Java est une date le même jour.

Ici, nous allons utiliser la bibliothèque tripartite pour obtenir la même fonctionnalité.

3.1 Utilisation de paquet Apache Commons Lang  DateUtils

DateUtils classe offre beaucoup de temps de classe utile, l' utiliser pour traiter le calendrier et la date des objets très facilement.

dépendance maven:

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

Obtenez un mot:

DateUtils.isSameDay(date1, date2);

 

3.2. Bibliothèque Joda-Time

Joda-Time  fournit une date et d' heure puissantes, vous pouvez remplacer la date et l' heure Java cours connexes.

dépendance maven

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

utilisation:

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 bibliothèque

Date4J  fournit également une API beaucoup de temps liée.

dépendance maven

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

Nous pouvons  java.util.Date dans DateTime objet, puis utiliser isSameDayAs pour comparer:

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 Résumé

Cet article décrit si Java Date d'objets à comparer deux façons différentes le même jour.

J'espère que vous comprenez les outils communs du temps, en utilisant le temps bien connu des outils tripartites en cas des besoins similaires à simplifier le code.

 

 

Publié 379 articles originaux · a gagné les éloges 862 · Vues 1,32 millions +

Je suppose que tu aimes

Origine blog.csdn.net/w605283073/article/details/103335373
conseillé
Classement