1.背景
在很多业务场景中,都有一个类似于每周计划/每周任务的功能,比如游戏中玩家每周都有一定的任务需要完成来获取奖励。这里就需要即使用户客户端时间不同,在服务端也要根据统一时间来进行判断。
2.需求
这套机制需要尽可能的高效快速,并且易于维护,不需要经常修改配置使其满足各种时间过程,例如每周过渡、每月过渡、每年过渡等等。
3.实现
该机制的实现主要有几个方面:
-
使得本周的判断有独立性、唯一性,防止与其他周的混淆。
-
能够计算本周开始到现在的每日日期信息,从而进行其他日期有关操作。
本机制使用的周数是基于unix时间戳(Unit timestamp)来制定的。具体步骤如下:
- 获取当前时间戳,使用C++中的time方法
time_t cur_time = time(NULL);
2.计算本周的index
int week_index = (cur_time + (8 * 3600) + (3 * 24 * 3600) ) / (60 * 60 * 24 *