Calculer mois entre deux dates en gardant l'année dans l'esprit à l'aide de JodaTime
Je suis en utilisant ce code pour calculer n de mois entre l'entrée pastdate et currentdate. Il utilise JodaTime
LocalDate date1 = new LocalDate(installmentStartDate2);
LocalDate date2 = new LocalDate(new java.util.Date());
PeriodType monthDay = PeriodType.yearMonthDayTime();
Period difference = new Period(date1, date2, monthDay);
int months = difference.getMonths();
return months + 1;
Maintenant quand je rentre 1 jan 2013-je obtenir 10 comme réponse. Mais le problème est d'obtenir 10, même quand je rentre 1 janv 2012.
Ce qui signifie que même si le calcul il ne considère que l'année.
Que puis-je faire pour obtenir la réponse correcte, c'est à dire, 22 quand je rentre 1 janv 2012.
Peut JodaTime faire ? Si oui ? Comment ?
Si pas ? Toute autre approche ?
- Je ne sais pas si Joda le Temps peut le faire ou pas. Avec Java Pur, mais, je voudrais convertir ces deux dates à millis et ensuite trouver la différence par soustraction. Puis convertir le résultat en date objet de fournir de l'année,le mois et la date de la différence.
- Vous ne pouvez pas trouver le nombre de mois en regardant un nombre de millisecondes, car la longueur d'un mois varie.
Vous devez vous connecter pour publier un commentaire.
Votre code est presque correct.
Vous pouvez modifier :
à :
et il fonctionnera également.
Vous demandez la différence en années, en mois et en jours - de sorte que vous obtenez de retour 1 an, 10 mois et 29 jours.
Suffit d'utiliser:
Ou si vous voulez vraiment utiliser
new Period
et peut-être obtenir des jours ainsi, vous pouvez utiliser:Vous pouvez simplement utiliser
PeriodType.months()
, mais si vous êtes vraiment intéressé par la mois, j'utiliserais le premier extrait de code ci-dessus pour tout faire en un seul court-ish déclaration.Joda time est une bonne façon de traiter ce problème
Créer un joda time date objet
De la différence entre deux dates en jours
De la différence entre deux dates dans le mois
De la différence entre deux dates en années
Je suggère l'utilisation de ce: