Dostaję dwie daty (z których jedna jest obecna) i trzeba znaleźć różnicę między nimi. Mój kod daje mi złe wyniki (czasami nawet ujemne).Znajdź dokładną różnicę między dwoma (Joda Time) obiektów DateTime w java
Próbowałem korzystać z klas miesięcy, dni, sekund, godzin i lat i odpowiednie między metodami bez powodzenia.
Edytuj: Powróciłem do mojego oryginalnego kodu, ale bez czasu trwania. @Basil Bourque opublikował świetne rozwiązanie, ale po prostu nie mam wystarczającego doświadczenia z Periods/Duration i wszystkiego, aby dynamicznie formatować z nich.
Rozwiązanie
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;
}
Właśnie sobie sprawę, że serwer jest w innej strefie czasowej. zaktualizuje się wkrótce, kiedy rozliczę się z tego – Zach