c# - 计算下一次运行前的分钟数

标签 c# algorithm timer

这应该是微不足道的,但今晚我的大脑遇到了障碍。

我有一个将运行一次的进程,然后每小时偏移的每 n 分钟。

EG,15 分钟表示按小时(例如 1)运行,然后是 1:15、1:30、1:45 等。

如果执行间隔为15,则初始执行时间为1:07,运行至1:11,等待下一次执行时间为4分钟。

如果执行间隔为15,则初始执行时间为1:07,运行至1:16,等待下一次执行时间为14分钟(执行时间不重叠)。

那么,在每次运行(长度不同)之后,我们如何计算等待下一次执行的分钟数?


我不会在这里放任何示例代码,因为我没有任何东西可以通过我的单元测试(我不是脑残到不能写那些 !)。

我已将其标记为 C#,因为这是我编写代码的内容,但我希望该解决方案与语言无关。

最佳答案

好吧,就在我点击提交问题时,我顿悟了。

给定 currentMinute >= 0 和 executionInterval >= 1

绝对值((currentMinute modulo executionInterval)- executionInterval)

或者,在 C# 中

return Math.Abs​​((currentMinute % executionInterval) - executionInterval);

到目前为止,我的单元测试通过了这个。所以,要么它是正确的,要么我没有足够的测试....

关于c# - 计算下一次运行前的分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494793/

相关文章:

c# - 为什么 Visual Studio 甚至在 Assets 文件夹之外创建 .meta 文件?

java - 从 Long id 生成唯一哈希

android - 如何安排在计时器完成后运行的 sqlite 查询?

ruby - 将 levenshtein 算法的 damerau 版本优化为优于 O(n*m)

java - 需要一个基于 Java 的可中断计时器线程

java - Android定时器抛出空指针异常

c# - nant <version> 任务

c# - 使用 TreeView 上的 StateImageList 防止颜色渗色

c# - 在 C# 中使用 SSE 是可能的吗?

python - CLRS 中伪代码的问题