如果重复周期是 “只有一次” 或者 “每天”,算法很好写,只要计算 当前时间 与 给定时间 的时间差就可以,如果 当前时间 < 给定时间,加上一天就ok!
现在问题是:假设 我 自定义了一个重复周期,设定 每周三,每周五7:30 AM的闹铃。
那么如果今天是在周三设定的时间之前,那么要计算与周三的时间差。
如果是周三设定的时间之后,周五设定的时间之前,那么要计算与周五的时间差。 如果是周五设定的时间之后,又要计算与周三的时间差。
仅仅重复了两天,如果重复天数达到四五天,逻辑感觉有点复杂。
想问问各位大神有没有好的解决算法。
周一的闹钟=0*24 + 设定时间
周二的闹钟=1*24 + 设定时间
......
周日的闹钟=6*24 + 设定时间
当前时间= (当天是周几-1)+当前时间
然后计算减法找到最小正数即可。
特例是要单独考虑今天是周日的情况。
复杂非周期闹钟只能自己计算最近一次闹钟的时间差进行设定。把闹钟时间定时方式存到数据库等其他方式。一次响了后进行下次闹钟处理。
算法看你自己支持了,比如你按周算也就一种算法。按月等等。实际也没那么复杂,当然要做的完美还是有不小的难度的。
可以下http://blog.csdn.net/wdaming1986/article/details/7461043着源码看看,看博客界面周中哪几天是可定义的。
ps:我没下来看过,如果没有,不要怪我。