游戏研究室

文档-资料-开源

日常冷却算法

在游戏中经常会用到一些一天触发一次的东西,而且冷却是在固定时间冷却,而不是触发后24小时冷却。

下面的算法可以解决这个问题:

解决思路是计算两个时间点之间存在多少个冷却时间。

下面是一个Java的代码实现,函数返回的数

//splitTime 冷却时间点,毫秒数。(如 23:30:30则是1970-01-01 23:30:30的当地UTC时间)
//lastTime 上次触发UTC时间
//now 当前UTC时间
//返回now和lastTime之间存在多少个冷却时间,大于等于1其实就表示日常已经冷却了
private int getDayDiff(long now,long lastTime) {
return (int) (((now-splitTime)/86400000)-((lastTime-splitTime)/86400000));
}

对 UTC时间不太了解可以百度一下。

, ,

发表评论