每天只更新一次

Dzh*_*eyt 1 android date

我的Android应用程序中有些东西需要每天更新一次.

我认为这很简单,但我不知道我需要格式化日期和时间的格式(如果需要时间)以及如何检查今天是否已完成更新(今天是在00:01 am到23之间:用户当地时间下午59点).如果今天已经完成更新,则不应该进行更新.

这是我所知道的怎么做:

  • 将最后更新日期保存在SharedPreferences中(但是如何获取它的字符串,我不知道)
  • 从SharedPreferences获取东西(但我不知道如何比较字符串格式的日期)

Mar*_*ski 9

与您选择的格式无关.这只是重新计算的问题.

我建议使用epoch以来的毫秒,因为所有系统调用都使用它,所以你更容易使用它.

因为1000毫秒是1秒,很容易发现1000*60*60*24等于一天(24小时).因此,如果storedMillis大于NOW - 1000*60*60*24(并且NOWSystem.currentTimeMillis()),那么进行检查还为时过早.如果storedMillis较小,则保存NOW时间戳并进行检查:

long now = System.currentTimeMillis();
long diffMillis = now - lastCheckedMillis;
if( diffMillis >= (3600000  * 24) ) {
  // store now (i.e. in shared prefs)

  // do the check
} else {
   // too early
}
Run Code Online (Sandbox Code Playgroud)

编辑

即使最后一次更新是在10分钟前完成的,我也很乐意在当天首次打开应用程序时这样做.

这就是如何获得适当的毫米来进行比较的问题.long now = System.currentTimeMillis();用以下代码块替换上面的代码:

Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR);
cal.clear(Calendar.HOUR_OF_DAY);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);

long now = cal.getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

这应该做的伎俩.