计算任务开始时间

blo*_*art 2 algorithm scheduling

我有去如下要求(相信我,我是太旧了功课的笑容)

我有一堆以不同频率运行的任务.他们还有一个开始"种子"日期/时间.起始种子在过去的某个时间,可能是一分钟前,可能是5年前.

我需要计算任务的下一个运行时间,使用开始种子日期/时间和频率 - 它不能简单地是"现在"+任务频率(对于那些在MS SQL Server上安排了作业的人来说这是一个熟悉的概念)

现在,这样做的愚蠢方法是采取起始种子并继续添加频率,直到它变得大于"现在".那不是最佳选择.这种天真的方式是采取开始种子日期,将其更改为今天的日期并保持时间不变,然后添加频率直到它比现在更大,但假设频率是24小时的倍数.

那么最好/最快的方法是什么?C#解决方案的奖励积分,但这是通用的,足以为任何语言制作一个有趣的拼图:)

Amb*_*ber 6

一种更好的方法是取开始时间戳和当前时间戳之间的差值,除以频率,将得到的乘数四舍五入到最接近的整数,再乘以频率,然后再将其加到开始时间戳.

四舍五入的行为将提供适当的抵消.