[英]Get difference between two Joda dates in seconds
我正在嘗試在我的應用程序中使用joda
API來處理Date
對象。
在某些活動中,我使用以下代碼將joda
datetime存儲在sharedpreference
prefsEdit.putLong(context.getString(R.string.last_status_change_time_key) , DateTime.now().getMillis());
現在在其他活動中,我將使用以下代碼獲取此存儲的首選項並計算日期之間的差
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();
代碼總是以minus
返回我的值,例如-31
, -12
等。
它沒有正確計算差值。
什么東西少了 ??
secondsBetween()
的聲明為:
secondsBetween(ReadableInstant start, ReadableInstant end)
為了獲得肯定的結果, start
日期應該是end
日期之前的日期。
這是因為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();
只需使用本機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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.