Calculer la différence de mois dans Joda Time
Lors de la 4e ligne de code (ignorer les espaces blancs & commentaires) et au-delà, je suis le calcul du mois de différence entre 2 dates. Cela fonctionne, mais ressemble un peu à hacky. Est-il un meilleur moyen?
int handleAllowance(LocalDate today) {
int allowance = membership.allowance();
if (allowance == 0) return 0;
//if update was last month (or earlier)
int months = today.monthOfYear().getMaximumValue() - today.monthOfYear().getMinimumValue(); //yeah, 12, but just to be 100% correct :-)
int curMonth = (today.getYear() * months) + today. getMonthOfYear();
int updMonth = (lastAllowanceUpdate.getYear() * months) + lastAllowanceUpdate.getMonthOfYear();
if (curMonth > updMonth) {
//...and if today is on or past update day
int updateDay = Math.min(allowanceDay, today.dayOfMonth().getMaximumValue());
if (today.getDayOfMonth() >= updateDay) {
//number of months to give allowance (in the rare case this process fails to run for 2 months or more)
int allowanceMonths = curMonth - updMonth;
//give credits
final int totalAllowance = allowance * allowanceMonths;
giveCredits(totalAllowance);
//update day
lastAllowanceUpdate = lastAllowanceUpdate.plusMonths(allowanceMonths);
//return the allowance given
return totalAllowance;
}
}
return 0;
}
source d'informationauteur Bart van Heukelom | 2011-07-27
Vous devez vous connecter pour publier un commentaire.
C'est assez similaire à Bozho la solution:
C'est la solution que j'ai trouvé lors des observations sur les Bozho