[英]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.