游戏服务器开发中曾遇到一个需求,给符合某些要求的玩家发送道具奖励,奖励的数量根据离线的天数计算。
该需求实现逻辑简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策划的算法,计算出道具种类与数量,发一封邮件给玩家就可以了。
由于缺乏现成函数,搜索获取了一段代码,代码如下:
public static int differentDays(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if (year1 != year2) {
// 同一年
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
// 闰年
timeDistance += 366;
} else {
// 不是闰年
timeDistance += ;
}
}
timeDistance + (day2 - day1);
} {
System.out.println( + (day2 - day1));
day2 - day1;
}
}

