アプリケーションに「今日の質問」機能を実装したいと考えています。ユーザーがその機能を 1 日に 1 回使用すると、日が変わるまでアクセスできなくなります。機能が最初にいつアクセスするかを取得することはできますが、次回のためにこの日時を確認するにはどうすればよいですか。
日付が変更されたかどうかを取得するにはどうすればよいですか。
前もって感謝します。
アプリケーションに「今日の質問」機能を実装したいと考えています。ユーザーがその機能を 1 日に 1 回使用すると、日が変わるまでアクセスできなくなります。機能が最初にいつアクセスするかを取得することはできますが、次回のためにこの日時を確認するにはどうすればよいですか。
日付が変更されたかどうかを取得するにはどうすればよいですか。
前もって感謝します。
isToday(long when)
タイムスタンプ、共有設定、および次の場所にあるメソッドの使用を組み合わせて使用できます。android.text.format.DateUtils
コード例:
SharedPreferences userDetails = context.getSharedPreferences("userdetails", MODE_PRIVATE);
long sharedPreferenceTimestamp= userDetails.getLong("lastquestiontime", 0); // 0: 1/1/1970
if(!DateUtils.isToday(sharedPreferenceTimestamp)) {
// --> show the Question HERE! <--
// update the value of last question show!
SharedPreferences.Editor editor = userDetails.edit();
editor.putLong("lastquestiontime", System.currentTimeMillis()); // value to store
editor.commit();
}
日付の計算にはUNIX時間を使用することを好みます。UNIX 時間は、1970 年 1 月 1 日午前 0 時 GMT からのミリ秒数です。この数値は、Date.getTime() メソッドを呼び出すことで取得できます。
経過日数が必要なため、この数値を 24*60*60*1000 で割る必要があります。その後、他に何もする必要はありません。2 つの数値を比較するだけです。数字が同じなら日は変わりません。
共有設定を使用して、ユーザー名と日付をキーとして追加できませんか。次にユーザー名を取得するときに、そのユーザーの日付を取得して比較できます。