2016-05-15 2 views
-1

Мне нужно мое приложение VIP-функции истекает через 30 дней с сегодняшнего дня, я сохраню текущую дату в конфигурации приложения. Как я могу проверить, истекло ли VIP-функция? Я не возражаю, если пользователь изменил часы назад, и приложение работает.Android 30 дней с сегодняшнего дня

Когда пользователь Активируйте VIP-функцию

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

// in want to also set StartDate and EndDate 

Затем, чтобы проверить, если дата сохраняется в mCurrentUser ENDDATE является Игуалью на сегодняшний день

// set user to no VIP! like 

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

Какую попытку вы сделали, используя доступные классы и библиотеки для обработки даты и времени? Мы не являемся службами написания кода. – hexafraction

+0

Я бы предпочел, чтобы вы записывали временную метку в часовом поясе своего сервера в базу данных вместе с именем пользователя. Это позволяет избежать проблемы изменения пользователем локальных часов. –

+0

, например. 'System.currentTimeMillis() + TimeUnit.DAYS.toMillis (30)' затем проверить текущее время. Это ровно 30 * 24 часа, поэтому его можно воспринимать немного иначе, чем «через 30 дней», который обычно закрывается в 00:00. – zapl

ответ

2

Вы можете получить дату после 30 дней с указанной даты, следуя метод.

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

Если вы хотите, чтобы он истекает ровно на секунду в 30d он начал ПСИ, вы можете использовать это:

для запуска таймера:

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

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

в OnCreate вашего mainActivity, чтобы проверить каждый раз, когда пользователь открывает приложение, если время завершено:

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» в таблицу «Пользователи». Затем выполните запрос для него, а затем выполните вычисления локально.

Смежные вопросы