Obtenez la date écoulée (par exemple, 0 an, 0 mois, 0 jour) à partir des deux dates. Exemple 01/08/2020 et 03/08/2020 → 0 ans 0 mois 2 jours 01/08/2020 et 01/09/2020 → 0 ans 1 mois 0 jours 01/08/2020 et 01/08/2021 → 1 an 0 mois 0 jour
-Date date> À date renvoie une erreur (code d'erreur: -1) ・ Le format de la date est aaaa / MM / jj uniquement -From date et To date sont tous deux de type chaîne ・ Renvoie l'année, le mois et le jour avec int [](0: année, 1: mois, 2: jour)
public static int getDateDiff(String paraFromDate, String paraToDate, int[] paraDiffDay) {
int diffYear = 0 ;
int diffMonth = 0 ;
int diffDay = 0 ;
//Décomposer la date de début en année, mois et jour(From)
int from_year = parseInt(paraFromDate.substring(0,4)) ;
int from_month = parseInt(paraFromDate.substring(5,7)) ;
int from_day = parseInt(paraFromDate.substring(8,10)) ;
//Décomposer la date de base en années, mois et jours(To)
int to_year = parseInt(paraToDate.substring(0,4)) ;
int to_month = parseInt(paraToDate.substring(5,7)) ;
int to_day = parseInt(paraToDate.substring(8,10)) ;
Calendar comp_from = Calendar.getInstance() ;
comp_from.set(from_year, from_month - 1, from_day) ;
Calendar comp_to = Calendar.getInstance() ;
comp_to.set(to_year, to_month - 1, to_day) ;
//Date de début>S'il s'agit d'une date de base, faites une erreur
if(comp_from.compareTo(comp_to) > 0) {
return -1;
}
//Obtenez la différence d'année
diffYear = to_year - from_year ;
//Comparer les mois
if(from_month > to_month) {
//Lorsque le mois de la date de début est plus grand=Tout au long de l'année
to_month = to_month + 12 ;
//Moins année
//Si c'est la même année du_le mois ne peut jamais être plus grand, donc il ne peut pas être négatif
diffYear = diffYear - 1 ;
}
//Obtenez la différence mensuelle
diffMonth = to_month - from_month ;
//Comparer les jours
//Date de début(From)Si c'est plus grand, on juge qu'il chevauche la lune
if(from_day > to_day) {
//Ajouter le nombre maximum de dates de début
to_day = to_day + comp_from.getActualMaximum(comp_from.DATE) ;
//Moins la différence entre les mois
diffMonth = diffMonth - 1 ;
}
//Obtenez la différence entre les jours
diffDay = to_day - from_day ;
//Définir en argument
paraDiffDay[0] = diffYear ;
paraDiffDay[1] = diffMonth ;
paraDiffDay[2] = diffDay ;
return 0 ;
}
Votre interlocuteur
String fromDate = '2020/08/20' ;
String toDate = '2020/10/01' ;
int diffDate[] = {0,0,0} ;
if( getDateDiff(fromDate, toDate, diffDate) != 0 ) {
//Erreur
}
else {
String keikaDate = diffDate[0] + "Année" + diffDate[1] + "Mois" + diffDate[2] + "journée" ;
}
・ Aucune gestion des erreurs → Une exception se produit si la date de l'argument n'est pas au format aaaa / MM / jj → Si la date n'existe pas même au format aaaa / MM / jj, le comportement est incorrect.
-Obtenir le nombre maximum de jours dans le mois en utilisant getActualMaximum → Au début 31 janvier, 3,5,7,8,10, décembre 30 avril, juin, septembre et novembre J'ai essayé de faire le 29 février si c'était une année humide, et le 28 si ce n'était pas le cas. Résolu avec une phrase de getActualMaximum.
Recommended Posts