Ich habe zwei Daten (einer davon ist die Gegenwart) und muss den Unterschied zwischen den beiden finden. Mein Code gibt mir schlechte Ergebnisse (manchmal sogar negativ).Finden Sie den genauen Unterschied zwischen zwei (Joda Time) DateTime-Objekten in Java
Ich habe versucht, die Monate, Tage, Sekunden, Stunden und Jahre Klassen und geeignete Methoden ohne Glück.
Bearbeiten: Ging zurück zu meinem ursprünglichen Code, aber ohne Dauer. @Basil Bourque hat eine großartige Lösung gepostet, aber ich habe einfach nicht genug Erfahrung mit Perioden/Dauer und all dem, um dynamisch von ihnen zu formatieren.
Lösung
public static String formattedTime(DateTime d){
DateTime present = new DateTime(Calendar.getInstance());
//dont really want to deal with WHY its 7hrs ahead. o well
DateTime date = d.minusHours(7);
int diff = Seconds.secondsBetween(date,present).getSeconds();
String postfix = "s";
Log.i("time", "" + diff);
if(diff>59){
diff = Minutes.minutesBetween(date, present).getMinutes();
postfix = "s";
if(diff>59){
diff = Hours.hoursBetween(date, present).getHours();
postfix = "hr";
if(diff>1)
postfix+="s";
if(diff>23){
diff = Days.daysBetween(date, present).getDays();
postfix = "d";
if(diff>6){
diff = Weeks.weeksBetween(date, present).getWeeks();
postfix = "wk";
if(diff>1)
postfix+="s";
if(diff>3){
diff = Months.monthsBetween(date, present).getMonths();
postfix = "m";
if(diff>11){
diff = Years.yearsBetween(date, present).getYears();
postfix = "yr";
if(diff>1)
postfix+="s";
}
}
}
}
}
}
return diff+postfix;
}
Ich habe gerade festgestellt, dass der Server in einer anderen Zeitzone ist. wird bald aktualisiert werden, wenn ich das – Zach