どの形式を選択するかは問題ではありません。再計算の問題です。
すべてのシステムコールが使用するため、エポックからミリ秒を使用することをお勧めします。同じものを使用する方が簡単です。
1000 ミリ秒は 1 秒なので1000*60*60*24
、1 日 (24 時間) に相当することは簡単にわかります。したがって、storedMillis
が よりも大きいNOW - 1000*60*60*24
(かつNOW
ie であるSystem.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
}
編集
最後の更新が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();
これでうまくいきます。