您的位置:首页 > 编程语言 > Java开发

Java每日登陆 和 月卡功能

2015-11-13 17:49 537 查看
//每日登陆

<1>

// 每日登陆---------------
// 初始化今昨两天日期数
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());// 今天的日期数
Data.today = calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH) - 1);// 昨天的日期数
Data.yesterday = calendar.get(Calendar.DAY_OF_MONTH);
// 初始化量准备弹出每日登陆窗
Data.lastLoginDate = SPUtil.getDataFormSp(main.getSp(),
"lastLoginDate", Data.yesterday);// 如果不存在最后登录日期,将昨天的日期作为最后登录日期
Data.dayNumSum = SPUtil.getDataFormSp(main.getSp(), "dayNumSum", 0);
// 如果上次登录是昨天,连续登录天数增加
if (Data.yesterday == Data.lastLoginDate) {
Data.dayNumSum += 1;
SPUtil.commit(main.getSp(), "dayNumSum", Data.dayNumSum);
}


<2>

import java.util.Calendar;

//测试函数
public class Main {

public static void main(String[] args) {

Calendar calender = Calendar.getInstance();
//
int today = calender.get(Calendar.DAY_OF_MONTH);
System.out.println("1:" + today);

//
calender.set(Calendar.DAY_OF_MONTH, calender.get(Calendar.DAY_OF_MONTH) + 18);
int yesterday = calender.get(Calendar.DAY_OF_MONTH);
System.out.println("2:" + yesterday);

}
}

/**
今天是11月13号,再加18天是下个月的1号
1:13
2:1
*/


//月卡

package com.jicent.magicgirl.model.other;

import com.jicent.magicgirl.utils.SPData;

/**
* 月卡功能
* @author jianan
*
*/
public class MonthCard {
private long endTime;  //月卡到期的时间
private static MonthCard instance = null;

//购买一次月卡
public void buyOnce(){
final long thirtyDaysDis = 30 * 24 * 60 * 60 * 1000L;  //30天的间隔

if(endTime == -1L){  //第一次购买月卡
endTime = System.currentTimeMillis() + thirtyDaysDis;
}else{
endTime += thirtyDaysDis;
}
SPData.getInstance().setEndTime(endTime);
}

//月卡剩余天数
public long getMonthCardRemainDays(){
long currTime = System.currentTimeMillis();
if(currTime >= endTime){ //如果到期了,则设置-1
endTime = -1;
SPData.getInstance().setEndTime(endTime);
return 0;
}else{
return haoMiao2Day(endTime - currTime);
}
}

//毫秒转化为天
private long haoMiao2Day(long time){
final long oneDay = 24 * 60 * 60 * 1000L;
if(time == 0 || time % oneDay == 0){
return time/oneDay;
}else{  //剩余不到一天,那么按照一天计算
return time/oneDay + 1;
}
}

//获取唯一实例
public static MonthCard getInstance(){
if(instance == null){
instance = new MonthCard();
}
return instance;
}

//私有构造方法
private MonthCard() {
endTime = SPData.getInstance().getEndTime();
}
}
注意:long后必须加个L,可以看到int最多11,long做多19位。不加L可能导致当int转化为Long时候溢出。
System.out.println(Integer.MAX_VALUE);  //2147483647
System.out.println(Long.MAX_VALUE);     //9223372036854775807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: