2016-05-15 21 views
-1

今日から30日後に有効期限が切れるアプリケーションVIP機能が必要です。現在の日付をアプリケーション設定に保存します。 VIP機能の有効期限が切れているかどうかを確認するにはどうすればよいですか?ユーザーが時計を元に戻してアプリが動いても大丈夫です。Android 30日今日から今日

ユーザーがmCurrentUser endDateにに保存された日付が今日

// set user to no VIP! like 

mCurrentUser.setNoVip(); 
mCurrentUser.SaveInBackgroud(); 
+2

豊富な日時処理クラスとライブラリを使用してどのような試みを行っていますか?私たちはコード作成サービスではありません。 – hexafraction

+0

私は、あなたのサーバーのタイムゾーンにタイムスタンプを書き、あなたのユーザ名とともにデータベースに書き込むのが好きです。これにより、ユーザが自分のローカルクロックを変更するという問題を回避することができます。 –

+0

'System.currentTimeMillis()+ TimeUnit.DAYS.toMillis(30)'そして現在の時刻でチェックします。これはちょうど30 * 24時間ですので、通常は00:00にキャップする「30日以内」とは少し違って見えることがあります。 – zapl

答えて

2

にigualある場合は、以下によって与えられた日から30日後の日付を取得できることを確認するためにその後

mCurrentUser.setVip(); 
mCurrentUser.SaveInBackgroud(); 

// in want to also set StartDate and EndDate 

VIPの機能を有効にします方法。

Calendar c = Calendar.getInstance(); 
    c.setTime(startDate); 
    c.add(Calendar.DATE, 30); 
Date expDate = c.getTime(); 

その後、両方の日付を比較できます。

if(startDate.after(expiate)){ 
    // Your time expired do your logic here. 
} 

trueの場合、時間は終了します。

0

あなたはそれが彼がVIPを始め30Dに第二に、正確に期限切れにしたい場合は、この使用することができます:チェックするために、あなたのmainActivityののonCreateに

SharedPreferences.editor editor1= getSharedPreferences("vipexpire", MODE_PRIVATE).edit(); 

        editor1.putInt("starttime", (int) System.currentTimeMillis()/1000); 
        editor1.apply(); 

:タイマーを開始する

をあなたは、この場合には全くローカルな情報を格納してはならない

SharedPreferences vipTimer= getSharedPreferences("vipexpire", MODE_PRIVATE); 
int startTime= vipTimer.getInt("starttime", 0); 
int currentTime = System.currentTimeMillis()/1000; 
int timeofVip= currentTime - startTime; //calculate the time of his VIP-being time 
if (timeofVip>= 2592000) //2592000 is 30 days in seconds 
{ 
//30 days over, update user to non-vip 
} 
0

:上の時間がある場合は、すべての時間のユーザーがアプリを開きます。代わりに、ユーザーテーブルに「activationDate」フィールドを追加します。その後、それを照会して、ローカルで計算を行います。