2017-03-16 1 views
0

Date 개체를 가지고 놀고 싶은데 내 앱에 joda API를 사용하려고합니다. sharedpreference에 난 joda 날짜를 저장하고 어떤 작업에서는 초 단위의 두 Joda 날짜의 차이를 가져 오십시오.

메신저 코드

long lastStatusChangeTime = objSharedPref.GetAppLongPrefByKey(R.string.last_status_change_time_key); 
DateTime now = DateTime.now(); 
DateTime dateTime = new DateTime(lastStatusChangeTime); 
Seconds seconds = Seconds.secondsBetween(now, dateTime); 
int n = seconds.getSeconds(); 
다음이 저장 환경을 페치 및 사용 기간의 차이를 산출하는 다른 활동 이제 다음 코드

prefsEdit.putLong(context.getString(R.string.last_status_change_time_key) , DateTime.now().getMillis()); 

를 사용

코드는 항상 minus의 값을 반환합니다 (예 : -31, -12 등).

차이가 올바르게 계산되지 않습니다.

무엇이 없습니까 ??

답변

1

secondsBetween()의 선언은 : 위해

secondsBetween(ReadableInstant start, ReadableInstant end) 

긍정적 결과가 startend 날짜가 날짜 이전의 날짜되어야 갖도록.

secondsBetween()은 절대 값을 반환하지 않기 때문입니다. 귀하의 예를 dateTime에서 는 now 전에 분명히, 그래서 양의 값을 얻기 위해 호출해야합니다 :

Seconds seconds = Seconds.secondsBetween(dateTime, now); 

대신 :

Seconds seconds = Seconds.secondsBetween(now, dateTime); // <- wrong order as `startDate` parameter is a date after `endDate` parameter 

와 코드가 될 수있다 :

long lastStatusChangeTime = objSharedPref.GetAppLongPrefByKey(R.string.last_status_change_time_key); 
DateTime now = DateTime.now(); 
DateTime dateTime = new DateTime(lastStatusChangeTime); 
Seconds seconds = Seconds.secondsBetween(dateTime, now); // <-- Here is the difference 
int n = seconds.getSeconds(); 
0

네이티브 Java 코드 만 사용하십시오.

long oldTime = Calendar.getInstance().getTime().getTime(); 
Thread.sleep(10*1000); 
long newTime = Calendar.getInstance().getTime().getTime(); 

long diffInMillisecods = newTime - oldTime; 
long diffInSeconds = diffInMillisecods/1000; 
관련 문제