我试图检查自用户执行操作后是否已超过一个小时。
目前我将日期/时间存储在sharedpreferences中,然后当用户再次点击活动时,我会检查sharedpref时间和当前时间。例如,如果用户今天上午10点在应用程序中执行某些操作,然后明天凌晨3点返回,我想知道是否已超过一小时。
我从SO那里尝试了一堆没有运气的答案。似乎共享预付时间被保存为日期' 8/17/16'与timeInMili。任何帮助都会很棒。
活动方法:
lastConfigCheck = prefs.getString("LAST_CONFIG_CHECK_DATE", null);
if (lastConfigCheck == null) {
lastConfigCheck = String.valueOf(System.currentTimeMillis());
editor.putString("LAST_CONFIG_CHECK_DATE", lastConfigCheck);
editor.apply();
Log.d("hellohours", lastConfigCheck);
}
else {
long todaysTime = System.currentTimeMillis();
Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);
if (timeElapsed > 120000) {
Log.d("hellohours", "boom digity");
} else {
Log.d("hellohours", "boom awesome");
}
}
当我检查logcat时,它会说明该行
Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);
导致:
"java.lang.NumberFormatException: Invalid long: "8/17/2016"'
答案 0 :(得分:3)
这个价值:
System.currentTimeMillis()
以Long的形式返回。因此,请尝试在共享首选项中存储该值。
editor.putLong("LAST_CONFIG_CHECK_DATE", System.currentTimeMillis());
一旦完成,您就不必进行任何转换,数学运算也很容易。