Lors de la comparaison des dates et des heures en Java, je voulais exclure les heures et comparer uniquement les dates. Notez que je voulais comparer "2018/04/06 12:15:27" et "2018/04/06 20:47:55" et juger uniquement si c'était le même jour (hors heure).
Cela ressemble à une manière très confuse, mais qu'il s'agisse d'un horodatage ou d'une classe Date, instanciez simplement la classe Calendar, définissez 0 sur heures, minutes, secondes et millisecondes, et comparez avec la méthode compareTo () de la classe Calendar. est. N'y a-t-il pas une manière plus intelligente de le faire?
//00 à partir de l'horodatage de la date et de l'heure appropriées:00:00:Créer 000 instances de calendrier
int oneDayTimeStamp = 1523017440;
Calendar oneDayCal = Calendar.getInstance();
oneDayCal.setTimeInMillis(oneDayTimeStamp * 1000L);
//Définissez 0 sur heure, minute, seconde et milliseconde
oneDayCal.set(Calendar.HOUR_OF_DAY, 0);
oneDayCal.set(Calendar.MINUTE, 0);
oneDayCal.set(Calendar.SECOND, 0);
oneDayCal.set(Calendar.MILLISECOND, 0);
//00 de la date et de l'heure actuelles:00:00:Créer 000 instances de calendrier
Calendar now = Calendar.getInstance();
//Définissez 0 sur heure, minute, seconde et milliseconde
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
if (oneDayCal.compareTo(now) == 0) {
//S'il vaut 0, la date est la même
}
Merci à @swordone pour ses commentaires, c'est de loin le plus intelligent!
public int compareByDate (Calendar c1, Calendar c2) {
int result = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
return (result != 0) ? result : c1.get(Calendar.DAY_OF_YEAR)- c2.get(Calendar.DAY_OF_YEAR);
}
C'est la méthode que j'ai reçue de @Luice. Vous devez ajouter une bibliothèque, mais vous n'avez besoin que de la méthode truncatedCompareTo. Ce que fait la méthode truncatedCompareTo à l'intérieur est d'exécuter la méthode truncate qui définit l'heure, la minute, la seconde et la milliseconde sur 0, puis d'obtenir l'horodatage de l'objet Calendar et de le comparer. J'aimerais voir la méthode truncatedCompareTo en tant qu'API Android. (Et Kotlin)
// commons-lang3-3.7.Mettez le fichier jar dans le dossier libs et compilez.Ajout de la description suivante pour graduer
compile files('libs/commons-lang3-3.7.jar')
// Calendar : c1, Calendar : c2
if (DateUtils.truncatedCompareTo(c1, c2, Calendar.HOUR_OF_DAY) == 0) {
//S'il vaut 0, la date est la même
}