import Java.text.SimpleDateFormat;
import Java.util.Date;
import org.joda.time.*;
public class Test {
public static void main(String[] args) {
String dateStart = "01/01/2000 05:30";
String dateStop = "02/2/2001 06:31";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
DateTime dt1 = new DateTime(d1);
DateTime dt2 = new DateTime(d2);
System.out.print(Years.yearsBetween(dt1, dt2).getYears() + " years, ");
System.out.print(Months.monthsBetween(dt1, dt2).getMonths() % 52 + " months, ");
System.out.print(Weeks.weeksBetween(dt1, dt2).getWeeks() % 4 + " weeks, ");
System.out.print(Days.daysBetween(dt1, dt2).getDays() % 7 + " days, ");
System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Je veux afficher le nombre d'années, mois, semaines, jours, heures et minutes entre deux dates en utilisant Joda-Time . Ma question est de savoir où mettre en œuvre le nombre de semaines dans un mois (qui n'est jamais constant). Je ne pense pas non plus que mes% aient raison.
Lorsque je cours, je reçois:
1 years, 13 months, 0 weeks, 6 days, 1 hours, 1 minutes,
Period
vous donne ceci hors de la boîte.
Period period = new Period(d1, d2);
System.out.print(period.getYears() + " years, ");
System.out.print(period.getMonths() + " months, ");
// ...
Pour embellir et obtenir un peu plus de contrôle sur la sortie, vous pouvez utiliser un PeriodFormatterBuilder
.