我需要我的应用程序VIP功能从今天起30天后到期,我会将当前日期存储在应用程序配置中。我如何检查VIP功能是否已过期?我不介意用户是否更改了时钟并且应用程序正常运行。
当用户激活VIP功能时
mCurrentUser.setVip();
mCurrentUser.SaveInBackgroud();
// in want to also set StartDate and EndDate
然后验证mCurrentUser endDate中保存的日期是否为今天的igual
// set user to no VIP! like
mCurrentUser.setNoVip();
mCurrentUser.SaveInBackgroud();
答案 0 :(得分:3)
您可以通过以下方法从指定日期起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.
}
如果为真,则时间已过期。
答案 1 :(得分:1)
在这种情况下,您不应该在本地存储此类信息。而是在Users表中添加字段“activationDate”。然后查询它,然后在本地进行计算。
答案 2 :(得分:0)
如果你希望它在30d内完全过期,他就开始了vip,你可以使用它:
启动计时器:
SharedPreferences.editor editor1= getSharedPreferences("vipexpire", MODE_PRIVATE).edit();
editor1.putInt("starttime", (int) System.currentTimeMillis() / 1000);
editor1.apply();
在mainActivity的onCreate中,如果时间结束,每次用户打开应用时都要检查:
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
}
在服务器上存储时间戳或者想要在应用中显示准确的倒计时时,此方法也很不错!